为什么我不推荐使用DefaultHttpClient?

时间:2014-07-16 18:54:58

标签: java httpclient

我正在开发一个项目,我需要调用我的服务,我的服务将以JSON格式返回数据。而且我不需要将此JSON响应序列化到任何POJO,我只需要将数据作为String返回。此应用程序非常重要,因此HttpClient必须非常快

所以我决定使用Apache HttpClient,还是有更好的选择我可以使用?

DefaultHttpClient httpclient = new DefaultHttpClient();
HttpUriRequest request = new HttpGet("some-url");
request.addHeader("Context", "some-value");
HttpResponse response = httpClient.execute(request);
String response =  IOUtils.toString(response.getEntity().getContent(), "UTF-8");

但它抱怨The type DefaultHttpClient is deprecated所以他们可能有新版本的HttpClient或其他一些方法来对网址进行HttpClient调用?

我有什么遗失的吗?

2 个答案:

答案 0 :(得分:2)

使用此:

HttpClient httpclient = HttpClientBuilder.create().build();

请参阅此stackoverflow post

答案 1 :(得分:2)

从病房的Apache HTTP Client API版本4.3开始,不推荐使用DefaultHttpClient。

使用以下maven依赖作为示例。

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.1</version>
</dependency>

导入后。

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGett;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.client.methods.HttpUriRequest;

以下代码阻止。

HttpClient client = HttpClientBuilder.create().build();
HttpUriRequest httpUriRequest = new 
HttpGet("http://example.domain/someuri");

HttpResponse response = client.execute(httpUriRequest);
System.out.println("Response:"+response);