How to use an HTTP proxy in java

后端 未结 3 2025
灰色年华
灰色年华 2020-12-02 20:44

I am writing a code that connects to websites and checks some code, like a crawler. But I need to connect trough a proxy and change the IP address (so it doesn\'t show the c

相关标签:
3条回答
  • 2020-12-02 21:26

    Or you can also use HttpClient which would suit your needs better. Check out the documentation, it's brief and very informative.

    DefaultHttpClient httpclient = new DefaultHttpClient();
    
    HttpHost proxy = new HttpHost("someproxy", 8080);
    httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
    
    0 讨论(0)
  • 2020-12-02 21:36

    You can use the java system properties to set up a proxy or pass it as command line options.

    You can find some details and samples here.

    Ex: Before opening the connection

    System.setProperty("http.proxyHost", "myProxyServer.com");
    System.setProperty("http.proxyPort", "80");
    

    Or you can use the default network proxies configured in the sytem

    System.setProperty("java.net.useSystemProxies", "true");
    

    Since Java 1.5 you can create a instance of proxy and pass it to the openConnection() method.

    Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080));
    URL url = new URL("http://www.yahoo.com");
    HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy);
    uc.connect();
    

    Or as lisak suggested, you can use some 3rd party libraries which supports your need better.

    0 讨论(0)
  • 2020-12-02 21:38
    Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("123.0.0.1", 8080));
    URL url = new URL("http://www.yahoo.com");
    HttpURLConnection uc = (HttpURLConnection)url.openConnection(proxy);
    uc.connect();
    

    This worked for me. I was able to use the proxy for the specific connection or transfer. Earlier we were using System.setProperty which used to set it at system level and all the requests internal/external started using the same proxy.

    Also Proxy.Type.HTTP works for both http and https

    0 讨论(0)
提交回复
热议问题