`
cloud21
  • 浏览: 396418 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Java发送HTTP

阅读更多
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 尹浩
 */
public class HttpRequester {

	private String defaultContentEncoding;

	public HttpRequester() {

		this.defaultContentEncoding = Charset.defaultCharset().name();
	}

	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为局部变量
		HttpURLConnection urlConnection = null;
		// URL对象
		URL url = null;

		// 如果请求为GET方法,并且参数不为空
		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++;
			}
			// 拼接URL串 + 参数
			urlString += param;
		}
		// NEW一个URL对象,由该对象的openConnection()方法将生成一个URLConnection对象
		url = new URL(urlString);
		urlConnection = (HttpURLConnection) url.openConnection();

		// 设置相关属性,具体含义请查阅JDK文档
		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));
			}

		// 如果请求为POST方法,并且参数不为空
		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));
			}
			// 将参数信息发送到HTTP服务器
			// 要注意:一旦使用了urlConnection.getOutputStream().write()方法,

			urlConnection.setRequestMethod("GET");
			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;
	}
}
import java.util.Vector;
/**
 * 
 * @author 尹浩
 *
 */
public class HttpRespons {

	String urlString;// URL地址串

	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;
	}

}
public class Test {
	public static void main(String[] ars) {
		HttpRequester request = new HttpRequester();
		HttpRespons hr = null;
		String urlStr = "http://hi.baidu.com/yymmiinngg";
		try {
			hr = request.sendGet(urlStr);
			System.out.println(hr.getContent());
		} catch (Exception e) {
			String e_str = "Send get to " + urlStr + " error : " + e.toString();
		}
	}
}
分享到:
评论
1 楼 zhf1zhf2 2010-11-26  
帅哥加点讲解啊!

相关推荐

    JAVA 发送http请求工具类

    在Java编程中,发送HTTP和HTTPS请求是常见的网络通信任务,尤其在开发Web服务客户端或者进行API测试时。本文将详细解析如何使用Java实现HTTP和HTTPS的GET与POST请求,并结合提供的类文件名称(HttpsHandler.java、...

    java发送http请求

    java发送http请求的一个小例子 包含get和post两种请求方式

    java发送http/https请求(get/post)Demo,亲测可用

    这里我们将深入探讨如何使用Java发送GET和POST请求,以及处理JSON数据。 首先,让我们关注GET请求。GET请求主要用于从服务器获取资源,其参数通常包含在URL中。在Java中,可以使用`HttpURLConnection`类或者第三方...

    JAVA发送HTTP请求,返回HTTP响应内容

    【JAVA发送HTTP请求,返回HTTP响应内容】 在Java编程中,发送HTTP请求并接收响应是常见的网络通信操作,尤其在Web服务的开发和测试中。本文将详细介绍如何使用Java发送HTTP请求并处理响应内容。 首先,我们需要...

    Java发送Http请求,解析html返回

    Java发送Http请求,解析html返回

    java发送http请求报文json

    ### Java 发送 HTTP 请求报文 JSON 的实现方法 在现代软件开发中,HTTP 请求与响应是客户端和服务端之间通信的基础。对于 Java 开发者来说,能够熟练掌握如何使用 Java 来构建 HTTP 请求并发送 JSON 数据是一项重要...

    Java发送Http请求工具类

    这是一个java发送get、post请求,并得到返回结果的工具类。

    Java发送HTTP请求GET/POST测试

    总的来说,Java发送HTTP请求GET/POST是网络编程的基础,理解和掌握这些知识对于进行Web服务的开发和集成至关重要。无论是简单的数据获取还是复杂的数据交互,都能通过这些方法实现。通过实践项目,你可以更好地理解...

    JAVA发送HTTP请求,返回HTTP响应内容,应用及实例代码

    这里我们将详细讲解如何使用Java发送HTTP请求,并获取响应内容。 首先,我们需要创建一个用于封装HTTP请求逻辑的类,如`HttpRequester`。这个类通常包含多个方法,分别对应不同的HTTP请求类型,例如GET和POST。以下...

    声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难

    声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层,是封装调用第三方restful api client接口的好帮手,是retrofit和feign之外另一个选择。通过在接口上声明注解的方式配置...

    JAVA发送HTTP请求操作类

    JAVA发送HTTP请求操作类 HttpRequester request = new HttpRequester(); HttpRespons hr = request.sendPost("响应地址", 参数Map);//有重载,可设置请求头、请求体 hr获得回执内容

    java 发送http和https请求的实例.docx

    ### Java 发送 HTTP 和 HTTPS 请求详解 #### 一、引言 在现代软件开发中,客户端与服务端之间的通信通常是通过 HTTP 或 HTTPS 协议来完成的。Java 作为一种广泛使用的编程语言,提供了多种方式来实现 HTTP 和 ...

    java发送http/https请求(get/post)代码

    本文将详细讲解如何使用Java发送GET和POST请求,以及涉及的HTTPS安全连接。 首先,理解HTTP和HTTPS的区别至关重要。HTTP(超文本传输协议)是一种用于分发超媒体信息的应用层协议,而HTTPS(超文本传输安全协议)是...

    Forest - 声明式HTTP客户端框架,让Java发送HTTP/HTTPS请求不再难

    声明式HTTP客户端API框架,让Java发送HTTP/HTTPS请求不再难。它比OkHttp和HttpClient更高层,是封装调用第三方restful api client接口的好帮手,是retrofit和feign之外另一个选择。通过在接口上声明注解的方式配置...

    java发送http get请求的两种方法(总结)

    Java 发送 HTTP GET 请求的两种方法总结 Java 中发送 HTTP GET 请求有多种方法,本文将总结两种常用的方法,分别使用 HttpClient 和流的形式发送 GET 请求。 Method 1: 使用 HttpClient 使用 HttpClient 发送 ...

    java发送httpPost请求实现

    用java编写了http Post的请求代码,通过发送请求的 URL,获取远程资源的响应结果,入参为json字符串。使用到httpPost,CloseableHttpClient

    java发送http请求工具类

    在Java编程中,发送HTTP请求是一项常见的任务,无论是获取网页数据、调用API接口还是进行自动化测试,都可能涉及到。本篇文章将详细讲解一个简单的Java工具类,用于发送HTTP请求,该工具类名为HttpURLUtils。 首先...

    java发送http get请求的两种方式

    "Java 发送 HTTP GET 请求的两种方式" Java 发送 HTTP GET 请求是 Java 编程语言中的一种常见操作,主要用于从服务器端获取数据。下面将详细介绍 Java 发送 HTTP GET 请求的两种方式。 第一种方式:使用 ...

    Java 发送http请求上传文件功能实例

    Java 发送 HTTP 请求上传文件功能实例 本文将通过实例代码介绍 Java 发送 HTTP 请求上传文件功能,涵盖了发送 GET 请求、发送 POST 请求、上传文件等内容。下面是详细的知识点说明: 发送 GET 请求 在 Java 中,...

Global site tag (gtag.js) - Google Analytics