Apache HttpComponents HttpClient Quick Start()

  本篇文章为你整理了Apache HttpComponents – HttpClient Quick Start()的详细内容,包含有 Apache HttpComponents – HttpClient Quick Start,希望能帮助你了解 Apache HttpComponents – HttpClient Quick Start。

  Download Binary package of the latest HttpClient 5.2 release or configure dependency on HttpClient and Fluent HC

  modules using a dependency manager of your choice as described here.

  
The below code fragment illustrates the execution of HTTP GET and POST requests using the HttpClient native API.

  

try (CloseableHttpClient httpclient = HttpClients.createDefault()) {

 

   ClassicHttpRequest httpGet = ClassicRequestBuilder.get( http://httpbin.org/get )

   .build();

   // The underlying HTTP connection is still held by the response object

   // to allow the response content to be streamed directly from the network socket.

   // In order to ensure correct deallocation of system resources

   // the user MUST call CloseableHttpResponse#close() from a finally clause.

   // Please note that if response content is not fully consumed the underlying

   // connection cannot be safely re-used and will be shut down and discarded

   // by the connection manager.

   httpclient.execute(httpGet, response - {

   System.out.println(response.getCode() + + response.getReasonPhrase());

   final HttpEntity entity1 = response.getEntity();

   // do something useful with the response body

   // and ensure it is fully consumed

   EntityUtils.consume(entity1);

   return null;

   ClassicHttpRequest httpPost = ClassicRequestBuilder.post( http://httpbin.org/post )

   .setEntity(new UrlEncodedFormEntity(Arrays.asList(

   new BasicNameValuePair( username , vip ),

   new BasicNameValuePair( password , secret ))))

   .build();

   httpclient.execute(httpPost, response - {

   System.out.println(response.getCode() + + response.getReasonPhrase());

   final HttpEntity entity2 = response.getEntity();

   // do something useful with the response body

   // and ensure it is fully consumed

   EntityUtils.consume(entity2);

   return null;

  

 

  Source can be found here

  here

  
The same requests can be executed using a simpler, albeit less flexible, fluent API.

  

// The fluent API relieves the user from having to deal with manual deallocation of system

 

  // resources at the cost of having to buffer response content in memory in some cases.

  Request.Get( http://targethost/homepage )

   .execute().returnContent();

  Request.Post( http://targethost/login )

   .bodyForm(Form.form().add( username , vip ).add( password , secret ).build())

   .execute().returnContent();

  

 

  Source can be found here

  here

  
The below code fragment illustrates the execution of HTTP requests using HttpClient async API.

  

try (CloseableHttpAsyncClient httpclient = HttpAsyncClients.createDefault()) {

 

   // Start the client

   httpclient.start();

   // Execute request

   SimpleHttpRequest request1 = SimpleRequestBuilder.get( http://httpbin.org/get ).build();

   Future SimpleHttpResponse future = httpclient.execute(request1, null);

   // and wait until response is received

   SimpleHttpResponse response1 = future.get();

   System.out.println(request1.getRequestUri() + - + response1.getCode());

   // One most likely would want to use a callback for operation result

   CountDownLatch latch1 = new CountDownLatch(1);

   SimpleHttpRequest request2 = SimpleRequestBuilder.get( http://httpbin.org/get ).build();

   httpclient.execute(request2, new FutureCallback SimpleHttpResponse () {

   @Override

   public void completed(SimpleHttpResponse response2) {

   latch1.countDown();

   System.out.println(request2.getRequestUri() + - + response2.getCode());

   @Override

   public void failed(Exception ex) {

   latch1.countDown();

   System.out.println(request2.getRequestUri() + - + ex);

   @Override

   public void cancelled() {

   latch1.countDown();

   System.out.println(request2.getRequestUri() + cancelled

   latch1.await();

   // In real world one most likely would want also want to stream

   // request and response body content

   CountDownLatch latch2 = new CountDownLatch(1);

   AsyncRequestProducer producer3 = AsyncRequestBuilder.get( http://httpbin.org/get ).build();

   AbstractCharResponseConsumer HttpResponse consumer3 = new AbstractCharResponseConsumer HttpResponse () {

   HttpResponse response;

   @Override

   protected void start(HttpResponse response, ContentType contentType) throws HttpException, IOException {

   this.response = response;

   @Override

   protected int capacityIncrement() {

   return Integer.MAX_VALUE;

   @Override

   protected void data(CharBuffer data, boolean endOfStream) throws IOException {

   // Do something useful

   @Override

   protected HttpResponse buildResult() throws IOException {

   return response;

   @Override

   public void releaseResources() {

   httpclient.execute(producer3, consumer3, new FutureCallback HttpResponse () {

   @Override

   public void completed(HttpResponse response3) {

   latch2.countDown();

   System.out.println(request2.getRequestUri() + - + response3.getCode());

   @Override

   public void failed(Exception ex) {

   latch2.countDown();

   System.out.println(request2.getRequestUri() + - + ex);

   @Override

   public void cancelled() {

   latch2.countDown();

   System.out.println(request2.getRequestUri() + cancelled

   latch2.await();

  

 

  Source can be found here

  here

  以上就是Apache HttpComponents – HttpClient Quick Start()的详细内容,想要了解更多 Apache HttpComponents – HttpClient Quick Start的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: