HttpClient的Post请求数据

最近在项目中需要添加Post请求数据,以前的Get请求是使用JDK自带的URLConnection。在项目组人员的推荐下,开始使用HttpClient。

HttpClient简介:

HttpClient是Apache Jakarta Common下的子项目,用来提供高效的、最新的、功能丰富的支持HTTP协议的客户端编程工具包,

并且它支持HTTP协议最新的版本和建议。HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus

和HTMLUnit都使用了HttpClient。

HttpClient发送请求的步骤:

(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) 释放连接。无论执行方法是否成功,都必须释放连接

因此,接下来按照该步骤,编写Post请求代码如下:

public String doPost(String url, Map<String,String> map, String charset){    CloseableHttpClient httpClient = null;    HttpPost httpPost = null;    String result = null;    try{        httpClient = HttpClients.createDefault();        httpPost = new HttpPost(url);        //设置参数        List<NameValuePair> list = new ArrayList<NameValuePair>();        Iterator iterator = map.entrySet().iterator();        while(iterator.hasNext()){            Map.Entry<String,String> elem = (Map.Entry<String, String>) iterator.next();            list.add(new BasicNameValuePair(elem.getKey(),elem.getValue()));        }        if(list.size() > 0){            UrlEncodedFormEntity entity = new UrlEncodedFormEntity(list,charset);            httpPost.setEntity(entity);        }        HttpResponse response = httpClient.execute(httpPost);        if(response != null){            HttpEntity resEntity = response.getEntity();            if(resEntity != null){                result = EntityUtils.toString(resEntity,charset);            }        }    }catch(Exception ex){        ex.printStackTrace();    }    return result;}

测试代码如下:

    public static void main(String[] args) throws UnsupportedEncodingException {        String url = "http://admin.tingwen.me/index.php/api/interfaceXykj/touList";        Map<String,String> params = new HashMap<>();        params.put("page","100");        HttpClient client = new HttpClient();        String result = client.doPost(url,params,"UTF-8");        System.out.println(UnicodeToString(result));    }

测试结果:

{
     "status": 1,
     "msg": "查询头条新闻成功!",
     "results": [
           {
                  "id": "65678",
                  "tuiid": "0",
                  "post_author": "8909",
                  "post_news": "161",
                  "author": "0",
                  "post_keywords": "Snap,无人机,科技",
                  "post_date": "2017-03-03 16:19:43",
                  "post_times": "",
                  "post_content": "",
                  "post_title": "传Snap公司正研发无人机:贯彻公司理念",
                  "post_lai": "新浪科技",
                  "post_mp": "http://mp3.tingwen.me/data/upload/mp3/58b9270c35694.mp3",
                  "post_time": "105000",
                  "post_size": "1268345"
           }
       ]
}

				
时间: 2024-10-10 17:35:17

HttpClient的Post请求数据的相关文章

Httpclient请求数据(post)

public static String loginCheck_POST_HttpClient(String name,String pass,String url){ String result = ""; HttpPost post = new HttpPost(url);//创建httpClient的post请求对象 //设置请求参数 HttpParams params = new BasicHttpParams(); HttpConnectionParams.setConnec

若不用jsonp,可使用httpClient请求数据

当你使用多个服务器进行协同提供服务时,会存在跨域请求数据的情况,除了使用jsonp外,还可以使用apache的httpClient进行请求数据. httpClient在service层被调用,请求到的数据,可能是json数据,也可能是html代码. 以下是httpClient的辅助工具类,直接调用即可. httpClientUtil.java package com.taotao.utils; import java.io.IOException; import java.net.URI; im

Android系列之网络(三)----使用HttpClient发送HTTP请求(分别通过GET和POST方法发送数据)

[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4006009.html 联系方式:[email protected] [系列]Android系列之网络:(持续更新) Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据) Android系列之网络(二)----HTTP请求头与响应头 Android

httpclient + AsyncTask 请求数据 || httpclient + handler 请求数据

public class MyAsy extends AsyncTask<String, Integer, String> { private String json; @Override    protected String doInBackground(String... params) {        // TODO Auto-generated method stub        // 实例化HttpClient        HttpClient client = new De

Android学习笔记之HttpClient实现Http请求....

PS:最近光忙着考试了....破组成原理都看吐了....搞的什么也不想干...写篇博客爽爽吧....貌似明天就考试了...sad... 学习笔记: 1.如何实现Http请求来实现通信.... 2.解决Android 2.3 版本以后无法使用Http请求问题....   这里我使用HttpClient来开发Http程序来完成简单的网络通信....其实使用HttpUrlConnection也可以实现,不过HttpClient可以完成HttpUrlConnection的所有功能,并且还自己增加了其他的

android使用apache httpclient发送post请求

package com.liuc; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.ht

通过 httpclientget 方法 向服务器中请求数据

/*   * 通过 httpclientget 方法 向服务器中请求数据   */ public String getweb(String username, String userpass, String url) { String str = ""; StringBuffer sb = new StringBuffer(url); sb.append("?username="); sb.append(username); sb.append("&

Httpclient发送json请求

一.Httpclient发送json请求 public String RequestJsonPost(String url){    String strresponse = null;    try{        HttpClient hc = new DefaultHttpClient();       HttpPost hp = new HttpPost(url);       JSONObject jsonParam = new JSONObject();       jsonPara

HttpClient Post Get请求方法,留在以后可能会用到

/// <summary> /// Post请求返回实体 /// </summary> /// <param name="url">请求地址</param> /// <param name="postData">请求数据</param> /// <returns>实体</returns> public static T PostResponse<T>(stri