目前大大小小的项目中,都不可避免两个系统之间的通讯交互,此处简单整理一下关于HttpClient常用的HttpGet和HttpPost这两个类的编码方式。

HttpClient常用的HttpGet和HttpPost这两个类分别对应Get方式和Post方式。

无论是使用HttpGet,还是使用HttpPost,都必须通过如下3步来访问HTTP资源。

1.创建HttpGet或HttpPost对象,将要请求的URL通过构造方法传入HttpGet或HttpPost对象。

2.使用DefaultHttpClient类的execute方法发送HTTP GET或HTTP POST请求,并返回HttpResponse对象。

3.通过HttpResponse接口的getEntity方法返回响应信息,并进行相应的处理。

如果使用HttpPost方法提交HTTP POST请求,则需要使用HttpPost类的setEntity方法设置请求参数。参数则必须用NameValuePair[]数组存储。

首先介绍HttpGet方式请求:

无参数的Get请求

/*** 封装HTTP GET方法* 无参数的Get请求* @param* @return* @throws ClientProtocolException* @throws java.io.IOException*/public static String get(String url) throws ClientProtocolException, IOException {//首先需要先创建一个DefaultHttpClient的实例HttpClient httpClient = new DefaultHttpClient();//先创建一个HttpGet对象,传入目标的网络地址,然后调用HttpClient的execute()方法即可:HttpGet httpGet = new HttpGet();httpGet.setURI(URI.create(url));HttpResponse response = httpClient.execute(httpGet);String httpEntityContent = getHttpEntityContent(response);httpGet.abort();return httpEntityContent;}

有参数的Get请求

 /*** 封装HTTP GET方法* 有参数的Get请求* @param* @param* @return* @throws ClientProtocolException* @throws java.io.IOException*/public static String get(String url, Map<String, String> paramMap) throws ClientProtocolException, IOException {HttpClient httpClient = new DefaultHttpClient();HttpGet httpGet = new HttpGet();List<NameValuePair> formparams = setHttpParams(paramMap);String param = URLEncodedUtils.format(formparams, "UTF-8");httpGet.setURI(URI.create(url + "?" + param));HttpResponse response = httpClient.execute(httpGet);String httpEntityContent = getHttpEntityContent(response);httpGet.abort();return httpEntityContent;}

构造请求参数的公共方法(setHttpParams)

    /*** 设置请求参数* @param* @return*/private static List<NameValuePair> setHttpParams(Map<String, String> paramMap) {List<NameValuePair> formparams = new ArrayList<NameValuePair>();Set<Map.Entry<String, String>> set = paramMap.entrySet();for (Map.Entry<String, String> entry : set) {formparams.add(new BasicNameValuePair(entry.getKey(), entry.getValue()));}return formparams;}

获得响应HTTP实体内容(getHttpEntityContent)

/*** 获得响应HTTP实体内容* @param response* @return* @throws java.io.IOException* @throws java.io.UnsupportedEncodingException*/private static String getHttpEntityContent(HttpResponse response) throws IOException, UnsupportedEncodingException {//通过HttpResponse 的getEntity()方法获取返回信息HttpEntity entity = response.getEntity();if (entity != null) {InputStream is = entity.getContent();BufferedReader br = new BufferedReader(new InputStreamReader(is, "UTF-8"));String line = br.readLine();StringBuilder sb = new StringBuilder();while (line != null) {sb.append(line + "\n");line = br.readLine();}br.close();is.close();return sb.toString();}return "";}

POST 请求

/*** 封装支付HTTP POST方法* @param* @param* @return* @throws ClientProtocolException* @throws java.io.IOException*/public static String postPayMsg(String url, Map<String, String> paramMap) throws ClientProtocolException, IOException {HttpClient httpClient = new DefaultHttpClient();httpClient.getParams().setIntParameter(CoreConnectionPNames.SO_TIMEOUT, 5000);  httpClient.getParams().setIntParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000);HttpPost httpPost = new HttpPost(url);List<NameValuePair> formparams = setHttpParams(paramMap);UrlEncodedFormEntity param = new UrlEncodedFormEntity(formparams, "UTF-8");//通过setEntity()设置参数给posthttpPost.setEntity(param);//利用httpClient的execute()方法发送请求并且获取返回参数HttpResponse response = httpClient.execute(httpPost);String httpEntityContent = getHttpEntityContent(response);httpPost.abort();return httpEntityContent;}

HttpClient的HttpGet和HttpPost工具类相关推荐

  1. 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...

    HTTPS (英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure) 是一 ...

  2. HttpClient发起Http/Https请求工具类

    本文涉及到的主要依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifact ...

  3. HttpClient进行服务器传递信息,HttpUtil工具类

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.引入Maven依赖 二.使用步骤 1.服务器A控制层 2.服务器B控制层 前言 使用httpclient实现两个服 ...

  4. 微信支付、微信企业付款到零钱工具类

    微信支付.微信企业付款到零钱工具类 主要依赖:apache httpclient 4.5 jdk1.8 工具类主要功能: xml参数拼接 签名算法实现 post加密请求 import lombok.e ...

  5. HttpPost.setHeader(Cookie, PHPSESSID= + PHPSESSID)方式的HttpClient工具类

    摘要: session在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一个不变就可以用到web的sessi ...

  6. Java开发小技巧(五):HttpClient工具类

    前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...

  7. HttpClient工具类

    HttpClient工具类 package cn.sh.steven.httpclient;import com.alibaba.fastjson.JSON; import com.alibaba.f ...

  8. JAVA——保持cookie登录状态的HttpClient封装工具类

    在日常开发中,我们经常需要通过http协议去调用网络内容,虽然java自身提供了net相关工具包,但是其灵活性和功能总是不如人意,于是有人专门搞出一个httpclient类库,来方便进行Http操作. ...

  9. JAVA——HttpClient封装工具类

    在日常开发中,我们经常需要通过http协议去调用网络内容,虽然java自身提供了net相关工具包,但是其灵活性和功能总是不如人意,于是有人专门搞出一个httpclient类库,来方便进行Http操作. ...

  10. apache httpclient 工具类_HttpClient 和Mycat 主从节点和读写分离

    第175次(HttpClient) 学习主题:HttpClient 学习目标: 1 掌握HttpClient自定义工具以及HttpClient具体的使用 对应视频: http://www.itbaiz ...

最新文章

  1. 无需数据线,在Windows电脑上就可以浏览和编辑华为的手机文件
  2. C语言中,带空格的字符串输入
  3. 欢乐纪中A组周六赛【2019.3.30】
  4. Matlab各种最值问题
  5. kvm vnc的使用,鼠标漂移等
  6. 国家能源集团携手华为首次部署矿鸿操作系统,开创工控新纪元
  7. python视图函数是什么意思_Flask初学者:视图函数
  8. 中国四季帐篷行业市场供需与战略研究报告
  9. Linux Shell 编程笔记
  10. three.js 使用DragControls.js 拖动元素
  11. 常用liunx / mysql命令
  12. 权威认证闭环 | 国内首家DevSecOps体系全栈产品通过CWE国际兼容性认证
  13. Matlab 遗传算法gaot、gatbx工具箱安装(出现未找到 ‘initializega‘、‘crtbp‘等错误)
  14. GBIT51233-2016装配式木结构建筑技术标准
  15. vue中分割线的实现
  16. 3.多边形曲线简化之Douglas-Peucker算法
  17. 鸿海成立AI研发中心 5年投资100亿新台币
  18. 轻运维|无人干预,易捷行云新一代私有云一键式扩容
  19. python判断字符串是否为大写字母、小写字母
  20. 巴拉特比印度大分水岭

热门文章

  1. 通过session模拟蛋糕购物车
  2. tensoflow实现相对位置编码(relative position representation)
  3. CCNA内容概述++++网络类型详解
  4. C51_UART_interrupt_timer,中断、定时器、串口
  5. SPDIF接口细则详解
  6. 如何获得 multimap的中的key的数目 (**)
  7. javascript学习之<button> 元素属性及方法
  8. android8.1中用libtinyalsa编写sound-hal驱动
  9. linux怎样自制库_怎样自制Linux系统?
  10. 【二维数组】java二维数组简易五子棋