乐虎游戏|乐虎国际登录|欢迎你

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

日期:2020-01-16编辑作者:计算机资讯

mg电子游戏 1

【声明】 

大许多Java应用程序都会通过HTTP公约来调用接口访谈种种互连网资源,JDK也提供了相应的HTTP工具包,不过使用起来缺乏方便灵活,所以大家能够使用Apache的HttpClient来封装二个怀有访问HTTP左券功底用的便捷工具类,为继续开荒应用提供方便。

应接转发,但请保留小说原本出处→_→ 

小说要点:

生命壹号:

  • HttpClient使用流程
  • 工具类包装
  • 利用实例

随笔来源:

 

<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.5</version></dependency><dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.11</version></dependency><dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.5</version></dependency>

HttpClient client = HttpClientBuilder.create;

 

GET央浼使用HttpGet,POST必要使用HttpPost,并传播央求的U凯雷德L

【连串】Android类别之互联网:(持续创新)

// POST请求HttpPost post = new HttpPost;// GET请求,URL中带请求参数HttpGet get = new HttpGet;

Android体系之网络(意气风发)----使用HttpClient发送HTTP诉求(通过get方法获取数据)

枯燥无味方式

List<NameValuePair> list = new ArrayList<>();list.add(new BasicNameValuePair("username", "admin"));list.add(new BasicNameValuePair("password", "123456"));// GET请求方式// 由于GET请求的参数是拼装在URL后方,所以需要构建一个完整的URL,再创建HttpGet实例URIBuilder uriBuilder = new URIBuilder("http://www.baidu.com");uriBuilder.setParameters;HttpGet get = new HttpGet(uriBuilder.build;// POST请求方式post.setEntity(new UrlEncodedFormEntity(list, Charsets.UTF_8));

BBIN体育平台,Android连串之互联网(二)----HTTP央浼头与响应头

BBIN视讯直播,JSON形式

Map<String,String> map = new HashMap<>();map.put("username", "admin");map.put("password", "123456");Gson gson = new Gson();String json = gson.toJson(map, new TypeToken<Map<String, String>>() {}.getType;post.setEntity(new StringEntity(json, Charsets.UTF_8));post.addHeader("Content-Type", "application/json");

调用HttpClient实例的execute方法发送诉求,重临二个HttpResponse对象

HttpResponse response = client.execute;

String result = EntityUtils.toString(response.getEntity;

post.releaseConnection();

mg电子游戏,HttpClient工具类代码(依据对应选用情况进行李包裹装):

public class HttpClientUtil { // 发送GET请求 public static String getRequest(String path, List<NameValuePair> parametersBody) throws RestApiException, URISyntaxException { URIBuilder uriBuilder = new URIBuilder; uriBuilder.setParameters(parametersBody); HttpGet get = new HttpGet(uriBuilder.build; HttpClient client = HttpClientBuilder.create; try { HttpResponse response = client.execute; int code = response.getStatusLine().getStatusCode(); if (code >= 400) throw new RuntimeException((new StringBuilder.append("Could not access protected resource. Server returned http code: ").append.toString; return EntityUtils.toString(response.getEntity; } catch (ClientProtocolException e) { throw new RestApiException("postRequest -- Client protocol exception!", e); } catch (IOException e) { throw new RestApiException("postRequest -- IO error!", e); } finally { get.releaseConnection(); } } // 发送POST请求 public static String postForm(String path, List<NameValuePair> parametersBody) throws RestApiException { HttpEntity entity = new UrlEncodedFormEntity(parametersBody, Charsets.UTF_8); return postRequest(path, "application/x-www-form-urlencoded", entity); } // 发送POST请求 public static String postJSON(String path, String json) throws RestApiException { StringEntity entity = new StringEntity(json, Charsets.UTF_8); return postRequest(path, "application/json", entity); } // 发送POST请求 public static String postRequest(String path, String mediaType, HttpEntity entity) throws RestApiException { logger.debug("[postRequest] resourceUrl: {}", path); HttpPost post = new HttpPost; post.addHeader("Content-Type", mediaType); post.addHeader("Accept", "application/json"); post.setEntity; try { HttpClient client = HttpClientBuilder.create; HttpResponse response = client.execute; int code = response.getStatusLine().getStatusCode(); if (code >= 400) throw new RestApiException(EntityUtils.toString(response.getEntity; return EntityUtils.toString(response.getEntity; } catch (ClientProtocolException e) { throw new RestApiException("postRequest -- Client protocol exception!", e); } catch (IOException e) { throw new RestApiException("postRequest -- IO error!", e); } finally { post.releaseConnection(); } }}

List<NameValuePair> parametersBody = new ArrayList();parametersBody.add(new BasicNameValuePair("userId", "admin"));String result = HttpClientUtil.getRequest("http://www.test.com/user",parametersBody);

List<NameValuePair> parametersBody = new ArrayList();parametersBody.add(new BasicNameValuePair("username", "admin"));parametersBody.add(new BasicNameValuePair("password", "123456"));String result = HttpClientUtil.postForm("http://www.test.com/login",parametersBody);

Map<String,String> map = new HashMap<>();map.put("username", "admin");map.put("password", "123456");Gson gson = new Gson();String json = gson.toJson(map, new TypeToken<Map<String, String>>() {}.getType;String result = HttpClientUtil.postJSON("http://www.test.com/login", json);

bbin手机客户端,至于HttpClient的亲力亲为介绍看这里:HttpClient入门

本文为笔者kMacro原创,转发请申明来源:

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

Android体系之网络(四)----SAX方式深入分析XML数据

 

【正文】 

后生可畏、HTTP左券初探:

HTTP(Hypertext Transfer Protocol)汉语 “超文本传输左券”,是少年老成种为布满式,合营式,多媒体消息系统服务,面向应用层的协商,是Internet上脚下应用最广大的应用层公约,它依照传输层的TCP协议举行通讯,HTTP公约是通用的、无状态的争论。

mg电子游戏 2

那多少个名词有少年老成种通俗的批注:

  • 广播发表契约:双方对话的正经
  • 通用的:用了都在说好,什么人用何人知道
  • 无状态的:成仇不认人
  • 超文本:除了文本,还是能是节奏、摄像

HTTP左券与Android开荒时期的涉及:

mg电子游戏 3

HTTP公约的读书重大:

  • Http公约底子概念、
  • 倡议响应模型、
  • 交给要求的不等方法、
  • 一倡百和状态判别、
  • 获得响应以至剖析响应、
  • 数量下载的实现方式、
  • 多少上传的得以完结格局、
  • 诉求头详细内容、
  • 八方呼应头详细内容等

至于http公约的学习,推荐多少个链接:

http://www.cnblogs.com/TankXiao/archive/2012/02/13/2342672.html

 

二、http公约概念:

1、http公约定义:

WWW是以Internet作为传输媒介的三个行使系统,WWW网络着力的传输单位是Web网页。WWW的行事是基于顾客机/服务器总结模型,由Web浏览器和Web服务器构成,两个之直接收超文本传输左券HTTP进行通讯。

HTTP左券时根据TCP/IP公约之上的说道,是Web浏览器和Web服务器之间的应用层的商业事务,是通用的、无状态的面向对象的协商。 

风华正茂旦要完成互连网互联大家要考虑八个必要清除的本领难题:

  • 首先:浏览器和服务器是通过什么来一连的。
  • 其次:这种连接方式是怎么贯彻的。

因而Internet去发送到服务器个中,而Internet内部能够通过二种办法来促成发送音信和数量:

  • 率先种:HTTP左券,也是在职业中最常用的,是起家在TCP/IP根基上落到实处的。
  • 第二种:FTP协议
  • 其二种:TCP/IP协议,它也是最尾部的磋商,此外的点子必得是要经过它,然而要想达成这种协议必定要落到实处socket编程,这种方式是用来上传一些非常大的文书,视频,进行断点续传的操作。

2、顾客端连接服务器实现内部的原理如下:

mg电子游戏 4

mg电子游戏 5

深入分析上海教室,步骤如下:

  • 先是步:在浏览器客户端中赢得客户输入的源委。 
  • 其次步:浏览器取得这么些网站之后,内部会将这一个域名发送到DNS上,进行域名拆解深入分析。获得它的IP之后就能够链接到钦定的服务器上,假诺服务器之处是:221.104.13.32:80,从浏览器到服务器端口它应用到最尾部的TCP/IP合同。 
  • 其三步:落成TCP/IP公约用Socket来达成,使用了Socket的套接字。 
  • 第四步:服务器端的80端口监听客商端的链接,那样顾客端到服务器就链接上了。
  • 服务器收到到这几个故事情节之后,并根据那几个央求的门径找到呼应的页面,进一层找到相应的网页内容,重回给顾客端。

浅显一点讲,客户在浏览器输入网站,通过http公约发出去,网站经过DNS域名解析,分析成钦定的ip地址,并在80端口上监听顾客的央求。服务器监听到央求之后,会以两种办法赶回给客商端:HTML、XML、JASON。

HTTP重回诉求数据的三种艺术:

  • 1、以HTML代码内容再次来到。 
  • 2、以XML字符串的款式重临,在以往的android开垦中这种样式再次来到数据超级多。 
  • 3、以JSON对象格局重返,在互连网流量上思考JSON要比XML方式要好有的,便于深入分析。

本文由乐虎游戏发布于计算机资讯,转载请注明出处:Java开发小技巧(五):HttpClient工具类

关键词:

Fountain 丨 PDF转Word 用谷歌文档进行在线OCR识别

PDF转word是一个永恒的话题, 原因有二 对于不少文字工作者来说,多文件格式的转换可谓是“家常便饭”,而最让人头...

详细>>

程序员的迷茫:前端能做什么?还是后端?全栈?

在我的职业生涯过程中,发现很多人会跑来问我这样的问题,前端能做什么?这条路怎么走。然后他们会分开来问一...

详细>>

秒懂Hadoop和Spark联系与区别

谈到大数据,相信大家对Hadoop和ApacheSpark这两个名字并不陌生。但我们往往对它们的理解只是提留在字面上,并没有对...

详细>>

程序员不要假装很努力,因为结果不会陪你演戏

今天分享是一些已经渡过中年危机的前辈们,看看从他们身上,是如何优雅的过渡的。如果想一直在程序这条路上走...

详细>>