【发布时间】:2012-12-25 02:40:55
【问题描述】:
我使用 Google HTTP Client Library for Java 发出简单的 JSON 请求并解析响应。当我不通过代理时,它运行良好。但现在我想允许我的用户在我的应用程序中使用代理(带身份验证)功能。我查看了 HttpTransport、HttpRequestFactory 和 HttpRequestInitializer 类,但没有成功。
到目前为止,我只是稍微修改了示例(主要是删除了不必要的代码)。那么我应该在代码的哪里添加代理设置呢?
static final HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
static final JsonFactory JSON_FACTORY = new JacksonFactory();
<T> T get(String url, Class<T> type) throws IOException {
HttpRequestFactory requestFactory =
HTTP_TRANSPORT.createRequestFactory(new HttpRequestInitializer() {
@Override
public void initialize(HttpRequest request) {
request.setParser(new JsonObjectParser(JSON_FACTORY));
}
});
HttpRequest request = requestFactory.buildGetRequest(new GenericUrl(url));
return request.execute().parseAs(type);
}
【问题讨论】:
-
NetHttpTransport 似乎是内置
java.netHTTP 客户端的包装器......所以我猜你可以使用内置的系统属性来配置代理,如 here 所讨论的那样跨度> -
嗯...这很烦人。我希望他们以完全隐藏的方式使用其他库,而不是它的某些组件是可见的。然后我可能会切换到 Apache 实现。
-
实际上,使用 Apache 或
java.net都不可能到达那里,因为封装不关心设置代理身份验证。我会提交一张票。
标签: java http-proxy google-http-client