我使用Google HTTP Client Library for Java來製作簡單的JSON請求並解析響應。當我沒有通過代理時,它運行良好。但是現在我想允許我的用戶在我的應用程序中使用代理(具有身份驗證)功能。我查看了HttpTransport,HttpRequestFactory和HttpRequestInitializer類沒有任何成功。將代理與Google HTTP Client Client Library結合使用
到目前爲止,我只是稍微修改了一些例子(主要是刪除不必要的代碼)。那麼我在代碼中添加代理設置?
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.net' HTTP客戶端的封裝器...所以我猜測你可以使用內置的系統屬性來配置代理,如[討論] [http:// docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html) – Charlie
嗯......這很煩人。我本來希望他們以完全隱藏的方式使用其他庫,而不是它的某些組件是可見的。然後我可能會切換到Apache實現。 –
實際上,使用Apache或'java.net'是不可能的,因爲封裝並不關心設置代理身份驗證。我會提交一張票。 –