7

我使用适用于 Java 的 Google HTTP 客户端库来发出简单的 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);
}
4

1 回答 1

7

这似乎适用于使用 google-http-client:1.13.1-beta 的经过身份验证的代理

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(PROXY_HOST, PROXY_PORT));
HttpTransport httpTransport = new NetHttpTransport.Builder().setProxy(proxy).build();

这还不足以满足您的需求吗?

于 2013-01-21T04:42:45.660 回答