使用HttpClient发送Post Http请求
来源:互联网 发布:硕士论文修改软件 编辑:程序博客网 时间:2024/06/01 08:38
最近需要使用java对Rest接口进行调用,也就是直接使用java直接发送Post, Get, Put, Delete等请求。
印象中可以使用Apache Common下的HttpClient来做,结果HttpClient已经独立成了HttpComponent,编码方式也有所改变。
Google出来的很多文章多数是common-httpclient的方式,在新版本中不怎么适用。经过一番研究自己做了一下封装:
- package cn.com.dayang.auth;
- import java.io.IOException;
- import java.io.UnsupportedEncodingException;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import org.apache.http.HttpEntity;
- import org.apache.http.HttpResponse;
- import org.apache.http.NameValuePair;
- import org.apache.http.ParseException;
- import org.apache.http.client.ClientProtocolException;
- import org.apache.http.client.entity.UrlEncodedFormEntity;
- import org.apache.http.client.methods.HttpGet;
- import org.apache.http.client.methods.HttpPost;
- import org.apache.http.client.methods.HttpUriRequest;
- import org.apache.http.impl.client.DefaultHttpClient;
- import org.apache.http.message.BasicNameValuePair;
- import org.apache.http.protocol.HTTP;
- import org.apache.http.util.EntityUtils;
- import org.apache.log4j.Logger;
- public class HttpXmlClient {
- private static Logger log = Logger.getLogger(HttpXmlClient.class);
- public static String post(String url, Map<String, String> params) {
- DefaultHttpClient httpclient = new DefaultHttpClient();
- String body = null;
- log.info("create httppost:" + url);
- HttpPost post = postForm(url, params);
- body = invoke(httpclient, post);
- httpclient.getConnectionManager().shutdown();
- return body;
- }
- public static String get(String url) {
- DefaultHttpClient httpclient = new DefaultHttpClient();
- String body = null;
- log.info("create httppost:" + url);
- HttpGet get = new HttpGet(url);
- body = invoke(httpclient, get);
- httpclient.getConnectionManager().shutdown();
- return body;
- }
- private static String invoke(DefaultHttpClient httpclient,
- HttpUriRequest httpost) {
- HttpResponse response = sendRequest(httpclient, httpost);
- String body = paseResponse(response);
- return body;
- }
- private static String paseResponse(HttpResponse response) {
- log.info("get response from http server..");
- HttpEntity entity = response.getEntity();
- log.info("response status: " + response.getStatusLine());
- String charset = EntityUtils.getContentCharSet(entity);
- log.info(charset);
- String body = null;
- try {
- body = EntityUtils.toString(entity);
- log.info(body);
- } catch (ParseException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return body;
- }
- private static HttpResponse sendRequest(DefaultHttpClient httpclient,
- HttpUriRequest httpost) {
- log.info("execute post...");
- HttpResponse response = null;
- try {
- response = httpclient.execute(httpost);
- } catch (ClientProtocolException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return response;
- }
- private static HttpPost postForm(String url, Map<String, String> params){
- HttpPost httpost = new HttpPost(url);
- List<NameValuePair> nvps = new ArrayList <NameValuePair>();
- Set<String> keySet = params.keySet();
- for(String key : keySet) {
- nvps.add(new BasicNameValuePair(key, params.get(key)));
- }
- try {
- log.info("set utf-8 form entity to httppost");
- httpost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- return httpost;
- }
- }
如何调用:
- Map<String, String> params = new HashMap<String, String>();
- params.put("name", name);
- params.put("password", password);
- String xml = HttpXmlClient.post(loginUrl, params);
- log.info(xml);
参考资料:
HttpComponents Client GA主页
官方提供的入门文档
官方提供的Examples(这个最直接)
0 0
- 使用HttpClient发送Post Http请求
- 使用HttpClient发送Post Http请求
- 使用HttpClient发送Post Http请求
- 使用HttpClient发送Post Http请求
- 使用HttpClient发送Post Http请求
- 使用HttpClient发送POST请求
- 使用httpclient发送post请求
- java使用HttpClient模拟发送http的get、post请求
- android使用apache httpclient发送post请求
- 使用Apache HttpClient发送get、post请求
- HttpComponent-HttpClient使用-发送Post请求
- 使用HttpClient发送GET和POST请求
- 使用httpclient发送get/post请求
- 使用httpclient发送get或post请求
- 使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据) (3)
- Httpclient发送POST请求
- httpClient发送post请求
- HttpClient发送post请求
- Linux安全学习总结
- maven自动化部署插件sshexec-maven-plugin
- Guava cache
- leetcode-4 Median of Two Sorted Arrays
- [BZOJ 3143][Hnoi2013]游走
- 使用HttpClient发送Post Http请求
- httpclient post 中文问题
- C++学习的一些经历
- JMeter
- 简约之美Jodd-http--深入源码理解http协议
- JActor
- Commons JEXL 示例详解
- Hbase课程01- 和Anmy学习大数据
- scala与java之间的那些事