JAVA发送HTTP请求,返回HTTP响应内容,实例及应用
来源:互联网 发布:linux修改用户密码命令 编辑:程序博客网 时间:2024/05/16 01:32
JDK 中提供了一些对无状态协议请求(HTTP )的支持,下面我就将我所写的一个小例子(组件)进行描述:
首先让我们先构建一个请求类(HttpRequester )。
该类封装了 JAVA 实现简单请求的代码,如下:
Java代码
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.net.HttpURLConnection;
- import java.net.URL;
- import java.nio.charset.Charset;
- import java.util.Map;
- import java.util.Vector;
- /**
- * HTTP请求对象
- *
- * @author YYmmiinngg
- */
- public class HttpRequester {
- private String defaultContentEncoding;
- public HttpRequester() {
- this.defaultContentEncoding = Charset.defaultCharset().name();
- }
- /**
- * 发送GET请求
- *
- * @param urlString
- * URL地址
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendGet(String urlString) throws IOException {
- return this.send(urlString, "GET", null, null);
- }
- /**
- * 发送GET请求
- *
- * @param urlString
- * URL地址
- * @param params
- * 参数集合
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendGet(String urlString, Map<String, String> params)
- throws IOException {
- return this.send(urlString, "GET", params, null);
- }
- /**
- * 发送GET请求
- *
- * @param urlString
- * URL地址
- * @param params
- * 参数集合
- * @param propertys
- * 请求属性
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendGet(String urlString, Map<String, String> params,
- Map<String, String> propertys) throws IOException {
- return this.send(urlString, "GET", params, propertys);
- }
- /**
- * 发送POST请求
- *
- * @param urlString
- * URL地址
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendPost(String urlString) throws IOException {
- return this.send(urlString, "POST", null, null);
- }
- /**
- * 发送POST请求
- *
- * @param urlString
- * URL地址
- * @param params
- * 参数集合
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendPost(String urlString, Map<String, String> params)
- throws IOException {
- return this.send(urlString, "POST", params, null);
- }
- /**
- * 发送POST请求
- *
- * @param urlString
- * URL地址
- * @param params
- * 参数集合
- * @param propertys
- * 请求属性
- * @return 响应对象
- * @throws IOException
- */
- public HttpRespons sendPost(String urlString, Map<String, String> params,
- Map<String, String> propertys) throws IOException {
- return this.send(urlString, "POST", params, propertys);
- }
- /**
- * 发送HTTP请求
- *
- * @param urlString
- * @return 响映对象
- * @throws IOException
- */
- private HttpRespons send(String urlString, String method,
- Map<String, String> parameters, Map<String, String> propertys)
- throws IOException {
- HttpURLConnection urlConnection = null;
- if (method.equalsIgnoreCase("GET") && parameters != null) {
- StringBuffer param = new StringBuffer();
- int i = 0;
- for (String key : parameters.keySet()) {
- if (i == 0)
- param.append("?");
- else
- param.append("&");
- param.append(key).append("=").append(parameters.get(key));
- i++;
- }
- urlString += param;
- }
- URL url = new URL(urlString);
- urlConnection = (HttpURLConnection) url.openConnection();
- urlConnection.setRequestMethod(method);
- urlConnection.setDoOutput(true);
- urlConnection.setDoInput(true);
- urlConnection.setUseCaches(false);
- if (propertys != null)
- for (String key : propertys.keySet()) {
- urlConnection.addRequestProperty(key, propertys.get(key));
- }
- if (method.equalsIgnoreCase("POST") && parameters != null) {
- StringBuffer param = new StringBuffer();
- for (String key : parameters.keySet()) {
- param.append("&");
- param.append(key).append("=").append(parameters.get(key));
- }
- urlConnection.getOutputStream().write(param.toString().getBytes());
- urlConnection.getOutputStream().flush();
- urlConnection.getOutputStream().close();
- }
- return this.makeContent(urlString, urlConnection);
- }
- /**
- * 得到响应对象
- *
- * @param urlConnection
- * @return 响应对象
- * @throws IOException
- */
- private HttpRespons makeContent(String urlString,
- HttpURLConnection urlConnection) throws IOException {
- HttpRespons httpResponser = new HttpRespons();
- try {
- InputStream in = urlConnection.getInputStream();
- BufferedReader bufferedReader = new BufferedReader(
- new InputStreamReader(in));
- httpResponser.contentCollection = new Vector<String>();
- StringBuffer temp = new StringBuffer();
- String line = bufferedReader.readLine();
- while (line != null) {
- httpResponser.contentCollection.add(line);
- temp.append(line).append("\r\n");
- line = bufferedReader.readLine();
- }
- bufferedReader.close();
- String ecod = urlConnection.getContentEncoding();
- if (ecod == null)
- ecod = this.defaultContentEncoding;
- httpResponser.urlString = urlString;
- httpResponser.defaultPort = urlConnection.getURL().getDefaultPort();
- httpResponser.file = urlConnection.getURL().getFile();
- httpResponser.host = urlConnection.getURL().getHost();
- httpResponser.path = urlConnection.getURL().getPath();
- httpResponser.port = urlConnection.getURL().getPort();
- httpResponser.protocol = urlConnection.getURL().getProtocol();
- httpResponser.query = urlConnection.getURL().getQuery();
- httpResponser.ref = urlConnection.getURL().getRef();
- httpResponser.userInfo = urlConnection.getURL().getUserInfo();
- httpResponser.content = new String(temp.toString().getBytes(), ecod);
- httpResponser.contentEncoding = ecod;
- httpResponser.code = urlConnection.getResponseCode();
- httpResponser.message = urlConnection.getResponseMessage();
- httpResponser.contentType = urlConnection.getContentType();
- httpResponser.method = urlConnection.getRequestMethod();
- httpResponser.connectTimeout = urlConnection.getConnectTimeout();
- httpResponser.readTimeout = urlConnection.getReadTimeout();
- return httpResponser;
- } catch (IOException e) {
- throw e;
- } finally {
- if (urlConnection != null)
- urlConnection.disconnect();
- }
- }
- /**
- * 默认的响应字符集
- */
- public String getDefaultContentEncoding() {
- return this.defaultContentEncoding;
- }
- /**
- * 设置默认的响应字符集
- */
- public void setDefaultContentEncoding(String defaultContentEncoding) {
- this.defaultContentEncoding = defaultContentEncoding;
- }
- }
其次我们来看看响应对象(HttpRespons )。 响应对象其实只是一个数据BEAN ,由此来封装请求响应的结果数据,如下:
Java代码
- import java.util.Vector;
- /**
- * 响应对象
- */
- public class HttpRespons {
- String urlString;
- int defaultPort;
- String file;
- String host;
- String path;
- int port;
- String protocol;
- String query;
- String ref;
- String userInfo;
- String contentEncoding;
- String content;
- String contentType;
- int code;
- String message;
- String method;
- int connectTimeout;
- int readTimeout;
- Vector<String> contentCollection;
- public String getContent() {
- return content;
- }
- public String getContentType() {
- return contentType;
- }
- public int getCode() {
- return code;
- }
- public String getMessage() {
- return message;
- }
- public Vector<String> getContentCollection() {
- return contentCollection;
- }
- public String getContentEncoding() {
- return contentEncoding;
- }
- public String getMethod() {
- return method;
- }
- public int getConnectTimeout() {
- return connectTimeout;
- }
- public int getReadTimeout() {
- return readTimeout;
- }
- public String getUrlString() {
- return urlString;
- }
- public int getDefaultPort() {
- return defaultPort;
- }
- public String getFile() {
- return file;
- }
- public String getHost() {
- return host;
- }
- public String getPath() {
- return path;
- }
- public int getPort() {
- return port;
- }
- public String getProtocol() {
- return protocol;
- }
- public String getQuery() {
- return query;
- }
- public String getRef() {
- return ref;
- }
- public String getUserInfo() {
- return userInfo;
- }
- }
最后,让我们写一个应用类,测试以上代码是否正确
Java代码
- import com.yao.http.HttpRequester;
- import com.yao.http.HttpRespons;
- public class Test {
- public static void main(String[] args) {
- try {
- HttpRequester request = new HttpRequester();
- HttpRespons hr = request.sendGet("http://www.csdn.net");
- System.out.println(hr.getUrlString());
- System.out.println(hr.getProtocol());
- System.out.println(hr.getHost());
- System.out.println(hr.getPort());
- System.out.println(hr.getContentEncoding());
- System.out.println(hr.getMethod());
- System.out.println(hr.getContent());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
0 0
- JAVA发送HTTP请求,返回HTTP响应内容,实例及应用
- JAVA发送HTTP请求,返回HTTP响应内容,实例及应用
- JAVA发送HTTP请求,返回HTTP响应内容,实例及应用
- JAVA发送HTTP请求,返回HTTP响应内容,实例及应用
- JAVA发送HTTP请求,返回HTTP响应内容,实例及应用
- JAVA发送HTTP请求,返回HTTP响应内容,实例及应用
- JAVA发送HTTP请求,返回HTTP响应内容,实例及应用
- JAVA发送HTTP请求(post、get),读取HTTP响应内容,实例及应用
- 使用JAVA发送HTTP请求(Http Request),返回HTTP响应(Http Response)内容,代码程序例子及原理说明
- 重写post发送http请求,返回响应码和内容及 用get发送http请求,返回响应码和内容
- java 发送 json、xml格式的 http请求,并读取响应response内容实例
- JAVA发送HTTP请求,并接受返回内容
- JAVA发送HTTP请求,并接受返回内容
- JAVA发送HTTP请求,并接受返回内容
- JAVA发送HTTP请求,并接受返回内容
- JAVA发送HTTP请求,并接受返回内容
- JAVA发送HTTP请求,并接受返回内容
- java发送http请求实例
- 12306为什么这么慢?
- 发文第一天
- VirtualBox安装多个CentOs虚拟搭建集群环境
- 先判断记录是否存在,不存在则将记录插入表的sql语句
- request转码
- JAVA发送HTTP请求,返回HTTP响应内容,实例及应用
- c++的一种配置文件读写封装——HDF5 DSM
- golang: 类型转换和类型断言
- hive第二篇----hive中partition如何使用
- C指针原理(68)-C快速入门(1)
- tar命令和ssh配合使用
- ARM指令如何在thumb和arm模式切换
- Linux下利用backtrace追踪函数调用堆栈以及定位段错误
- 几天后体验,望一切顺利