本篇文章为你整理了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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。