0

新しい httocomponent-client モジュールを使用してプロキシ経由でインターネットに接続しようとすると問題が発生します

Proxy オブジェクトと HttpURLConnection を直接使用すると、すべてうまくいきます。

URL u = new URL("http://www.google.com");
Proxy proxy = new Proxy(Type.HTTP, new InetSocketAddress("somehost", 8080));
HttpURLConnection con = (HttpURLConnection) u.openConnection(proxy);
con.setRequestMethod("GET");
System.out.println(con.getResponseCode());

今、私は新しいAPIで同じことをしようとしています:

HttpHost proxy = new HttpHost("somehost", 8080, "http");
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
HttpHost targetHost = new HttpHost("http://www.google.com");
HttpGet httpGet = new HttpGet("/");
try {
    HttpResponse httpResponse = httpClient.execute(targetHost, httpGet);
    System.out.println(httpResponse.toString());
} catch (Exception e) {
    e.printStackTrace();
}

しかし、私はこれを取得します:

HTTP/1.1 407 Proxy Authentication Required ( Forefront TMG requires authorization to fulfill the request. Access to the Web Proxy filter is denied.  ) [Via: 1.1 xxx, Proxy-Authenticate: Negotiate, Proxy-Authenticate: Kerberos, Proxy-Authenticate: NTLM, Connection: Keep-Alive, Proxy-Connection: Keep-Alive, Pragma: no-cache, Cache-Control: no-cache, Content-Type: text/html, Content-Length: 7079  ]

私も試しました

ProxySelectorRoutePlanner routePlanner = new ProxySelectorRoutePlanner(
httpClient.getConnectionManager().getSchemeRegistry(),new MyProxySelector());  
    httpClient.setRoutePlanner(routePlanner);

MyProxySelector は、私が作成したプロキシを返しますが、結果は返しません。

新しい API を使用すると、コード内でプロキシ認証が必要になるのはなぜですか?

4

1 に答える 1

0

ProxySelectorRoutePlanner を使用したソリューションが機能しない理由がわかりません。プロキシ設定で JVM を起動してもよろしいですか?

次の行を追加する必要があるようです:

httpClient.getCredentialsProvider().setCredentials(new AuthScope("yourProxyHost", Port),
            new UsernamePasswordCredentials("yourUsername", "yourPass"));
于 2013-01-09T13:47:29.000 に答える