2017-07-31 6 views
2

プロキシサーバー経由でWebサイトにアクセスしようとしています.HTMLクライアントを使用しています。プロキシサーバーの詳細を動的に取得するときにSOCKSサーバーからの不正な応答が返される

これが正常に動作しているコードです:

import org.apache.commons.httpclient.Credentials; 
import org.apache.commons.httpclient.HostConfiguration; 
import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.HttpMethod; 
import org.apache.commons.httpclient.HttpStatus; 
import org.apache.commons.httpclient.UsernamePasswordCredentials; 
import org.apache.commons.httpclient.auth.AuthScope; 
import org.apache.commons.httpclient.methods.GetMethod; 
import java.io.IOException; 
import java.net.InetSocketAddress; 
import java.net.Proxy; 
import java.net.ProxySelector; 
import java.net.URI; 
import java.net.URISyntaxException; 
import java.util.Properties; 

public class Working { 
private static String PROXY_HOST = "proxy.test.org"; 
private static int PROXY_PORT = 80; 

    public static void main(String[] args) { 
    HttpClient client = new HttpClient(); 
    HttpMethod method = new GetMethod("https://www.example.org"); 
    HostConfiguration config = client.getHostConfiguration(); 
    config.setProxy(PROXY_HOST, PROXY_PORT); 

    try { 
      client.executeMethod(method); 
      if (method.getStatusCode() == HttpStatus.SC_OK) { 
      String response = method.getResponseBodyAsString(); 
      System.out.println("Response = " + response); 
         } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     method.releaseConnection(); 
    } 
    System.out.println("end"); 
    } 
} 

しかし、私はPROXY_HOSTとPROXY_PORT値を設定するには、以下の方法を使用すると、動的に私は

例外「SOCKSサーバーから不正な応答」を取得しています
public static void getProxyDetails() 
{ 
    Properties systemSettings = System.getProperties(); 
    systemSettings.put("proxySet", "true"); 
    try { 
     Proxy proxy = (Proxy) ProxySelector.getDefault().select(new URI(
       "https://www.example2.com/xyz")).iterator(). 
      next(); 
     System.out.println("proxy hostname : " + proxy.type()); 
      InetSocketAddress addr = (InetSocketAddress)proxy.address(); 
      if (addr == null) { 
       System.out.println("No Proxy"); 
      } else { 
       System.out.println("proxy hostname : " + addr.getHostName()); 
       System.out.println("proxy port : " + addr.getPort()); 
       PROXY_HOST = addr.getHostName(); 
       PROXY_PORT = addr.getPort();    
      } 
    } catch (URISyntaxException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 

私はこのサイトで提供されている他の提案を試みましたが、私の問題は解決しませんでした。 私はコードを間違えていますか?何か助けていただければ幸いです。

答えて

関連する問題