HttpClient基础解析

  

本文讲述了HttpClient基础知识,对相关概念进行解释在这里分享给大家,供大家参考。

  

1。请求执行:
  

  

HttpClient最重要的功能是执行HTTP方法。执行HTTP方法涉及一个或多个HTTP请求/HTTP响应交换,通常由HttpClient内部处理。用户期望提供一个请求对象来执行,并且希望HttpClient将请求发送到目标服务器返回相应的响应对象,如果执行失败则抛出异常。
  

  

很自然,HttpClient API的主要入口点是定义上述合同的HttpClient接口。
  

  

这是一个请求执行过程的一个例子,它的最简单的形式是:

        CloseableHttpClient httpclient=HttpClients.createDefault ();   HttpGet HttpGet=new HttpGet (“https://localhost/?;   CloseableHttpResponse响应=httpclient.execute (httpget);   尝试{   & lt;……比;   最后}{   response.close ();   }      

1.1。HTTP请求
  

  

所有HTTP请求都有一个请求行,包括方法名称,请求URI和HTTP协议版本。
  

  

HttpClient的支持了在HTTP/1.1规范中定义的所有HTTP方法的框的:,,,,删除、跟踪和选项。没有为每个方法类型:一个特定的类HttpGet, HttpHead, HttpPost, HttpPut, HttpDelete, HttpTrace,和HttpOptions。
  

  

要求通用是统一资源标识符,用于标识应用请求的资源.北京请求URI由协议方案,主机名,可选端口,资源路径,可选查询和可选片段组成。

        URI URI=new URIBuilder ()   .setScheme (“http”)   .setHost (“www.google.com”)   .setPath(“/搜索”)   .setParameter (“q”、“httpclient”)   .setParameter (“btnG”、“谷歌搜索”)   .setParameter (“aq”、“f”)   .setParameter (oq”、“”)   .build ();   HttpGet HttpGet=new HttpGet (uri);   System.out.println (httpget.getURI ());      

1.2。HTTP响应
  

  

HTTP响应是在接收和解释请求消息之后由服务器发送回客户端的消息。该消息的第一行包括协议版本,后跟数字状态代码及其关联的文本短语。

        HttpResponse响应=new BasicHttpResponse (HttpVersion.HTTP_1_1   HttpStatus。SC_OK,“OK”);      System.out.println (response.getProtocolVersion ());   .getStatusCode System.out.println (response.getStatusLine () ());   .getReasonPhrase System.out.println (response.getStatusLine () ());   .toString System.out.println (response.getStatusLine () ());//输出结果/*   HTTP/1.1   200   好吧   HTTP/1.1 200 OK   */      

1.3。处理消息头
  

  

HTTP消息可以包含描述消息属性的多个头部,如内容长度,内容类型等.HttpClient提供了检索,添加,删除和枚举头文件的方法。
  获取给定类型的所有标头的最有效的方法是使用HeaderIterator接口。

        HttpResponse响应=new BasicHttpResponse (HttpVersion.HTTP_1_1 HttpStatus.SC_OK   、“OK”);   response.addHeader (“set - cookie”,   “c1=;路径=/;域=localhost ");   response.addHeader (“set - cookie”,   “c2=b;路径=\/\”,c3=c;域=\“localhost \ ");      HeaderIterator它=response.headerIterator (set - cookie”);      而(it.hasNext ()) {   System.out.println (it.next ());   }      

它还提供了方便的方法来将HTTP消息解析为单独的头元素。

        HttpResponse响应=new BasicHttpResponse (HttpVersion.HTTP_1_1 HttpStatus.SC_OK   、“OK”);   response.addHeader (“set - cookie”,   “c1=;路径=/;域=localhost ");   response.addHeader (“set - cookie”,   “c2=b;路径=\/\”,c3=c;域=\“localhost \ ");   HeaderElementIterator=new BasicHeaderElementIterator (   response.headerIterator (set - cookie));   而(it.hasNext ()) {   HeaderElement elem=it.nextElement ();   System.out.println (elem.getName () + "=" + elem.getValue ());   NameValuePair [] params=elem.getParameters ();   for (int i=0;我& lt; params.length;我+ +){   系统。out.println (" + params[我]);   }   }      

1.4。HTTP实体
  

  

HTTP消息可以携带与请求或响应相关联的内容实体。实体可以在一些请求和一些响应中找的到,因为它们是可选的。使用实体的请求被称为实体封装请求.北京规范定义了两个实体封装请求方法:POST和PUT。响应通常期望包含内容实体。有例外的情况,如应对头方法204没有内容,304年不修改,205年重置内容响应。

HttpClient基础解析