为什么我得到 DefaultHttpClient 已被弃用?

joh*_*ohn 5 java httpclient

我正在处理一个项目,在该项目中我需要调用我的服务,我的服务将以 JSON 格式返回数据。而且我不需要将此 JSON 响应序列化到任何 POJO,我只需要将数据作为字符串返回。这个应用程序对性能非常关键,所以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");
Run Code Online (Sandbox Code Playgroud)

但它抱怨说The type DefaultHttpClient is deprecated,也许他们有新版本HttpClient或其他方式来对 URL 进行 HttpClient 调用?

有什么我想念的吗?

ars*_*nal 9

用这个:

HttpClient httpclient = HttpClientBuilder.create().build();
Run Code Online (Sandbox Code Playgroud)

请参阅此 stackoverflow帖子


Red*_*Boy 5

从 Apache HTTP Client API 版本 4.3 开始,DefaultHttpClient 已被弃用。

使用以下 Maven 依赖项作为示例。

<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

导入后。

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;
Run Code Online (Sandbox Code Playgroud)

以下代码块。

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

HttpResponse response = client.execute(httpUriRequest);
System.out.println("Response:"+response);
Run Code Online (Sandbox Code Playgroud)