HttpClient请求

一、背景

  公司有一个需求,就是之前的那个webservice实现的那个模块用http请求的方式实现.jar包下载地址http://files.cnblogs.com/files/antonyhubei/httpclient_jar.zip

二、介绍Http请求

  HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

三、如何执行一个Http请求

1、创建一个客户端,同时配置响应的参数

//创建一个客户端
HttpClient client = new HttpClient(); 
//主机的配置信息
HostConfiguration hostConfig = new HostConfiguration();
//ip 地址,port端口
hostConfig.setHost(ip, port); 
//客户端主机的配置
client.setHostConfiguration(hostConfig);
//其他的客户端参数
HttpClientParams params = new HttpClientParams();
//编码
params.setContentCharset("utf-8");
//是否是长连接
params.setParameter("Connection", "keep-alive");
//设置请求连接超时时间为5秒
params.setConnectionManagerTimeout(5*1000);
//测试
params.setSoTimeout(5000);
client.setParams(params);
PostMethod method = new PostMethod();
method.setRequestHeader("Connection", "Keep-Alive");

2、准备要发送的参数,可能是一个数组

//设置请求的url
URI uri = new URI("/epgs/api/setSyncCode",true,"utf-8");
method.setURI(uri);
//设置请求的参数(数组)
NameValuePair[] params = new NameValuePair[] {
                    new NameValuePair("syncCode", syncCode)
            };
method.setRequestBody(params);
//设置请求头(防止有时候参数的位数会有问题)
method.setRequestHeader("Content-Length", String.valueOf(method.getRequestEntity().getContentLength()));  

3、发送Http请求

client.executeMethod(method);

4、获取响应的状态码和响应的数据进行分析并执行下一步的操作

 //请求返回200
if (method.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
     //获取服务器响应的数据
     String result = method.getResponseBodyAsString();
     if (result.equals("true")) {
	ret = true;
	} else {
		ret = false;
	}
 }        

  

原文地址:https://www.cnblogs.com/antonyhubei/p/5499201.html