HttpClient的HttpGet和HttpPost工具类
目前大大小小的项目中,都不可避免两个系统之间的通讯交互,此处简单整理一下关于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工具类相关推荐
- 前端请求接口post_程序员:HttpClient进行post请求的工具类,访问第三方接口HTTPS...
HTTPS (英语:Hypertext Transfer Protocol Secure,缩写:HTTPS,常称为HTTP over TLS,HTTP over SSL或HTTP Secure) 是一 ...
- HttpClient发起Http/Https请求工具类
本文涉及到的主要依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifact ...
- HttpClient进行服务器传递信息,HttpUtil工具类
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.引入Maven依赖 二.使用步骤 1.服务器A控制层 2.服务器B控制层 前言 使用httpclient实现两个服 ...
- 微信支付、微信企业付款到零钱工具类
微信支付.微信企业付款到零钱工具类 主要依赖:apache httpclient 4.5 jdk1.8 工具类主要功能: xml参数拼接 签名算法实现 post加密请求 import lombok.e ...
- HttpPost.setHeader(Cookie, PHPSESSID= + PHPSESSID)方式的HttpClient工具类
摘要: session在浏览器和web服务器直接是通过一个叫做name为sessionid的cookie来传递的,所以只要在每次数据请求时保持sessionid是同一个不变就可以用到web的sessi ...
- Java开发小技巧(五):HttpClient工具类
前言 大多数Java应用程序都会通过HTTP协议来调用接口访问各种网络资源,JDK也提供了相应的HTTP工具包,但是使用起来不够方便灵活,所以我们可以利用Apache的HttpClient来封装一个具 ...
- HttpClient工具类
HttpClient工具类 package cn.sh.steven.httpclient;import com.alibaba.fastjson.JSON; import com.alibaba.f ...
- JAVA——保持cookie登录状态的HttpClient封装工具类
在日常开发中,我们经常需要通过http协议去调用网络内容,虽然java自身提供了net相关工具包,但是其灵活性和功能总是不如人意,于是有人专门搞出一个httpclient类库,来方便进行Http操作. ...
- JAVA——HttpClient封装工具类
在日常开发中,我们经常需要通过http协议去调用网络内容,虽然java自身提供了net相关工具包,但是其灵活性和功能总是不如人意,于是有人专门搞出一个httpclient类库,来方便进行Http操作. ...
- apache httpclient 工具类_HttpClient 和Mycat 主从节点和读写分离
第175次(HttpClient) 学习主题:HttpClient 学习目标: 1 掌握HttpClient自定义工具以及HttpClient具体的使用 对应视频: http://www.itbaiz ...
最新文章
- 无需数据线,在Windows电脑上就可以浏览和编辑华为的手机文件
- C语言中,带空格的字符串输入
- 欢乐纪中A组周六赛【2019.3.30】
- Matlab各种最值问题
- kvm vnc的使用,鼠标漂移等
- 国家能源集团携手华为首次部署矿鸿操作系统,开创工控新纪元
- python视图函数是什么意思_Flask初学者:视图函数
- 中国四季帐篷行业市场供需与战略研究报告
- Linux Shell 编程笔记
- three.js 使用DragControls.js 拖动元素
- 常用liunx / mysql命令
- 权威认证闭环 | 国内首家DevSecOps体系全栈产品通过CWE国际兼容性认证
- Matlab 遗传算法gaot、gatbx工具箱安装(出现未找到 ‘initializega‘、‘crtbp‘等错误)
- GBIT51233-2016装配式木结构建筑技术标准
- vue中分割线的实现
- 3.多边形曲线简化之Douglas-Peucker算法
- 鸿海成立AI研发中心 5年投资100亿新台币
- 轻运维|无人干预,易捷行云新一代私有云一键式扩容
- python判断字符串是否为大写字母、小写字母
- 巴拉特比印度大分水岭
热门文章
- 通过session模拟蛋糕购物车
- tensoflow实现相对位置编码(relative position representation)
- CCNA内容概述++++网络类型详解
- C51_UART_interrupt_timer,中断、定时器、串口
- SPDIF接口细则详解
- 如何获得 multimap的中的key的数目 (**)
- javascript学习之<button> 元素属性及方法
- android8.1中用libtinyalsa编写sound-hal驱动
- linux怎样自制库_怎样自制Linux系统?
- 【二维数组】java二维数组简易五子棋