关于HttpClient的应用
2017-07-10 21:24
281 查看
http是关于跨域访问。分为六部:
1. 创建HttpClient对象。
2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
6. 释放连接。无论执行方法是否成功,都必须释放连接
HttpClient 的实例:
Java文件:
public void queryHpj() {
this.init();
String loginName =StringUtil.null2blank(request.getParameter("loginName"));
// String reStr = "";
String json="";
// 创建默认的httpClient实例.
HttpClient httpclient = new DefaultHttpClient();//过时的方法,不建议使用
//消息发送测试 用httpPost是post请求 还有httpGet 是get请求
HttpPost httppost = new HttpPost("http://10.68.198.47:8080/HPJXTWebService.asmx/HPJXTAPI1");
// 创建参数队列,post提交,参数提交到接口方法后,根据方法设置接收参数类型自动转换参数
List<NameValuePair> formparams = new ArrayList<NameValuePair>();//发送的中文消息为UTF-8的unicode,不经过编码过滤器的话,接收也是UTF-8的unicod
//测试消息发送
formparams.add(new BasicNameValuePair("loginName", loginName));
UrlEncodedFormEntity uefEntity;
try {
uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
//设置请求参数 也可以用 httpClient.setParams 来设置参数
httppost.setEntity(uefEntity);
// System.out.println("executing request " + httppost.getURI());
HttpResponse response;
//调用httpClient对象的excute()发送请求,该方法返回一个httpResponse
response = httpclient.execute(httppost);
//获取httpEntity对象 该对象包装了服务器的响应内容
HttpEntity entity = response.getEntity();
if (entity != null) {
// 打印响应状态
System.out.println(response.getStatusLine());
json = EntityUtils.toString(entity, "UTF-8");
// Map paramsMap = (Map) JSONUtil.json2Object(reStr, Map.class);
// System.out.println("**********************-------"+paramsMap.get("MAINTITLE1"));
// System.out.println("**********************-------"+paramsMap.get("HPCURRENT_Count"));
// System.out.println("**********************-------"+paramsMap.get("HPHISTORY_Count"));
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
httpclient.getConnectionManager().shutdown();
}
sendResult(json);
}
private void sendResult(Object o) {
this.init();
response.setContentType("text/html; charset=UTF-8");
try {
response.getWriter().print(o.toString());
response.getWriter().flush();//写出响应,由它来写出相应至服务器的文本信息
//flush(); 把缓冲区的数据强行输出
} catch (IOException e) {
e.printStackTrace();
}
}
jsp 文件:
用ajax去访问接口。
1. 创建HttpClient对象。
2. 创建请求方法的实例,并指定请求URL。如果需要发送GET请求,创建HttpGet对象;如果需要发送POST请求,创建HttpPost对象。
3. 如果需要发送请求参数,可调用HttpGet、HttpPost共同的setParams(HetpParams params)方法来添加请求参数;对于HttpPost对象而言,也可调用setEntity(HttpEntity entity)方法来设置请求参数。
4. 调用HttpClient对象的execute(HttpUriRequest request)发送请求,该方法返回一个HttpResponse。
5. 调用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用HttpResponse的getEntity()方法可获取HttpEntity对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
6. 释放连接。无论执行方法是否成功,都必须释放连接
HttpClient 的实例:
Java文件:
public void queryHpj() {
this.init();
String loginName =StringUtil.null2blank(request.getParameter("loginName"));
// String reStr = "";
String json="";
// 创建默认的httpClient实例.
HttpClient httpclient = new DefaultHttpClient();//过时的方法,不建议使用
//消息发送测试 用httpPost是post请求 还有httpGet 是get请求
HttpPost httppost = new HttpPost("http://10.68.198.47:8080/HPJXTWebService.asmx/HPJXTAPI1");
// 创建参数队列,post提交,参数提交到接口方法后,根据方法设置接收参数类型自动转换参数
List<NameValuePair> formparams = new ArrayList<NameValuePair>();//发送的中文消息为UTF-8的unicode,不经过编码过滤器的话,接收也是UTF-8的unicod
//测试消息发送
formparams.add(new BasicNameValuePair("loginName", loginName));
UrlEncodedFormEntity uefEntity;
try {
uefEntity = new UrlEncodedFormEntity(formparams, "UTF-8");
//设置请求参数 也可以用 httpClient.setParams 来设置参数
httppost.setEntity(uefEntity);
// System.out.println("executing request " + httppost.getURI());
HttpResponse response;
//调用httpClient对象的excute()发送请求,该方法返回一个httpResponse
response = httpclient.execute(httppost);
//获取httpEntity对象 该对象包装了服务器的响应内容
HttpEntity entity = response.getEntity();
if (entity != null) {
// 打印响应状态
System.out.println(response.getStatusLine());
json = EntityUtils.toString(entity, "UTF-8");
// Map paramsMap = (Map) JSONUtil.json2Object(reStr, Map.class);
// System.out.println("**********************-------"+paramsMap.get("MAINTITLE1"));
// System.out.println("**********************-------"+paramsMap.get("HPCURRENT_Count"));
// System.out.println("**********************-------"+paramsMap.get("HPHISTORY_Count"));
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭连接,释放资源
httpclient.getConnectionManager().shutdown();
}
sendResult(json);
}
private void sendResult(Object o) {
this.init();
response.setContentType("text/html; charset=UTF-8");
try {
response.getWriter().print(o.toString());
response.getWriter().flush();//写出响应,由它来写出相应至服务器的文本信息
//flush(); 把缓冲区的数据强行输出
} catch (IOException e) {
e.printStackTrace();
}
}
jsp 文件:
用ajax去访问接口。
相关文章推荐
- C#关于HttpClient的应用(二):融云IM集成
- C#关于HttpClient的应用(一):获取IP所在的地理位置信息
- C#关于HttpClient的应用(二):极光推送IM集成
- 关于HttpClient的总结
- Android的网络应用-使用Apache HttpClient
- Java初学者实践:httpclient+HTMLParser 的应用
- 客户端和应用服务器之间利用HttpClient和Servlet交互JSON对象进行通信
- 关于HttpWebRequest和HttpWebResponse的应用
- HttpClient的简单应用
- HttpClient3.1 未releaseConnection导致应用服务器宕机
- Android的网络应用-使用Apache HttpClient
- ios开发关于log的一些应用http://blog.csdn.net/remote_roamer/article/details/7107320
- 求救一个关于commons-httpclient组件在网络连接过程中的速度问题,好奇怪啊。。。
- 关于安卓HTTP请求用HttpUrlConnection还是HttpClient好
- 关于HttpHandler与HttpModule的理解和应用方法
- HttpClient4入门应用----抓取网站内容(解决中文乱码)
- 关于0电阻的应用--来源:http://www.eepw.com.cn/article/56676.htm
- 关于net2.0里面新出现的类backgroundworker的应用 --引用自http://www.cnblogs.com/dlwang2002/archive/2006/12/07/585093.html
- .net关于httpModules的应用示例
- 关于HttpClient 获取页面,出现乱码的问题