Używam wspólnej biblioteki httpclienta Apache. Czy można przesłać żądanie HTTP przez serwer proxy? Mówiąc dokładniej, potrzebuję użyć listy proxy dla wielowątkowych żądań POST (obecnie testuję z pojedynczymi żądaniami GET).Typowy klient HTTP i proxy
Próbowałem użyć:
httpclient.getHostConfiguration().setProxy("67.177.104.230", 58720);
pojawiają się błędy z tym kodem:
21.03.2012. 20:49:17 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
21.03.2012. 20:49:17 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: Retrying request
21.03.2012. 20:49:19 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
21.03.2012. 20:49:19 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: Retrying request
21.03.2012. 20:49:21 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: I/O exception (java.net.ConnectException) caught when processing request: Connection refused: connect
21.03.2012. 20:49:21 org.apache.commons.httpclient.HttpMethodDirector executeWithRetry
INFO: Retrying request
org.apache.commons.httpclient.ProtocolException: The server xxxxx failed to respond with a valid HTTP response
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1846)
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1590)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:995)
at org.apache.commons.httpclient.ConnectMethod.execute(ConnectMethod.java:144)
at org.apache.commons.httpclient.HttpMethodDirector.executeConnect(HttpMethodDirector.java:495)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:390)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
at test.main(test.java:42)
Kiedy usunąć tę linię, wszystko działa dobrze, jak oczekiwano.
Jest to rzeczywiście możliwe. W twoim wyjątku, który host jest redaktorem 'xxxxx'? Twój serwer proxy lub miejsce docelowe? Dlaczego odmówiono tylu połączeń? Czy Twoje proxy działa właściwie? –
Skonfigurowałeś serwer proxy HTTP, a nie serwer proxy SOCKS. SOCKS nie jest obsługiwany przez HttpClient 3. Możesz być w stanie użyć właściwości systemu "socksProxyHost" i "socksProxyPort". Lub HttpComponents HttpClient 4 może obsługiwać proxy proxy SOCKS. –