Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using proxies with Google HTTP Client Library for Java

I use Google HTTP Client Library for Java to make simple JSON requests and parse responses. It works well when I don't go through a proxy. But now I'd like to allow my users to use a proxy (with authentication) functionality in my application. I looked in the HttpTransport, HttpRequestFactory and HttpRequestInitializer classes without any success.

I've only slightly modified the examples so far (and mostly it was removing unnecessary code). So where in the code do I add the proxy settings?

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);
}
like image 851
Olivier Grégoire Avatar asked Jan 10 '13 16:01

Olivier Grégoire


1 Answers

This seems to work just fine for an authenticated proxy using 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();

Isn't this sufficient for your needs?

like image 115
William Avatar answered Nov 08 '22 09:11

William