3

我正在尝试将 Http 上传转换为使用新的 HttpClient 4.3.1 类。我是 Java 新手。我在网上找到的所有东西都使用了已弃用的类(即 HttpClient client = new DefaultHttpClient() 或更旧的方法来创建 HttpClient 的实例。请原谅下面所有额外的库,我的项目的其余部分将需要一些库。

我尝试了无数种不同的方法来创建实例,下面是我在 org.appache 文档中看到的 4.3.1 中使用的方法。
不幸的是,我收到一个错误,表明 HttpClientBuilder 不可见。我什至不确定不可见是什么意思……库已被导入。谁能指出我创建 HttpClient 实例的正确方向。

 package newHttpApiUpload;

 import org.apache.http.client.HttpClient;
 import org.apache.http.HttpConnection;  
 import org.apache.http.conn.HttpClientConnectionManager;
 import org.apache.http.impl.client.HttpClientBuilder;
 import org.apache.http.impl.client.HttpClients;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;  
 import org.apache.http.client.config.RequestConfig; 
 import org.apache.http.auth.AuthScope;
 import org.apache.http.auth.UsernamePasswordCredentials;
 import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.AbstractHttpEntity; 

 import java.io.File;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;

 public class Api {

     protected static final HttpClientBuilder client = new HttpClientBuilder();

 }
4

2 回答 2

4

构造函数HttpClientBuilder()是受保护的(不是公共的),所以你不能从你的代码中调用它。这就是不可见的意思。

您使用静态构造方法调用构建器,如下所示:

HttpClientBuilder.create();

或者,快速创建客户(这是重点)

HttpClient client = HttpClientBuilder.create()
  .setUserAgent("MyAgent")
  .setMaxConnPerRoute(4)
  .build()
于 2013-11-07T11:40:09.053 回答
3

您需要使用来自HttpClients.

您可以使用它们来获取 的预配置实例HttpClient,或使用它们HttpClients.custom()来应用您的自定义配置HttpClientBuilder

于 2013-11-07T11:39:54.973 回答