web-dev-qa-db-ja.com

HttpURLConnectionでプロキシを使用するにはどうすればよいですか?

これをやると...

conn = new URL(urlString).openConnection();
System.out.println("Proxy? " + conn.usingProxy());

印刷する

Proxy? false

問題は、私がプロキシの背後にいるということです。 JVMはWindowsのどこからプロキシ情報を取得しますか?これを設定するにはどうすればよいですか?私の他のアプリはすべて、プロキシに完全に満足しているようです。

122
izb

Java 1.5以降では、- Java.net.Proxy インスタンスを openConnection(proxy) メソッドに渡すこともできます。

//Proxy instance, proxy ip = 10.0.0.1 with port 8080
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("10.0.0.1", 8080));
conn = new URL(urlString).openConnection(proxy);

プロキシで認証が​​必要な場合、407が返されます。

この場合、次のコードが必要です。

    Authenticator authenticator = new Authenticator() {

        public PasswordAuthentication getPasswordAuthentication() {
            return (new PasswordAuthentication("user",
                    "password".toCharArray()));
        }
    };
    Authenticator.setDefault(authenticator);
313
NickDK

これは、インターネットから簡単に回答できます。システムプロパティhttp.proxyHostおよびhttp.proxyPortを設定します。これを行うには、System.setProperty()を使用するか、コマンドラインから-D構文を使用します。

32
Sean Owen

プロキシは、http.proxyHostとhttp.proxyPortの2つのシステムプロパティを通じてサポートされます。これらは、それぞれプロキシサーバーとポートに設定する必要があります。次の基本的な例で説明します。

String url = "http://www.google.com/",
       proxy = "proxy.mydomain.com",
       port = "8080";
URL server = new URL(url);
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost",proxy);
systemProperties.setProperty("http.proxyPort",port);
HttpURLConnection connection = (HttpURLConnection)server.openConnection();
connection.connect();
InputStream in = connection.getInputStream();
readResponse(in);
19
Pascal Thivent

Connectionを開く前に以下を設定します。

System.setProperty("http.proxyHost", "Host");
System.setProperty("http.proxyPort", "port_number");

プロキシに認証が必要な場合、

System.setProperty("http.proxyUser", "user");
System.setProperty("http.proxyPassword", "password");
10
ZZ Coder

設定することもできます

-Djava.net.useSystemProxies=true

WindowsとLinuxでは、これはシステム設定を使用するので、自分で繰り返す必要はありません(DRY)

http://docs.Oracle.com/javase/7/docs/api/Java/net/doc-files/net-properties.html#Proxies

Java 1.8以降の場合、-Djdk.http.auth.tunneling.disabledSchemes=を設定して、httpsで動作する基本認証のプロキシを作成する必要があります。

5
Anton

承認済みの回答は機能します...プロキシホストとポートがわかっている場合=)ただし、プロキシホストとポートを探している場合は、以下の手順が役立ちます

自動構成されたプロキシが指定されている場合:その後

1> IE(または任意のブラウザー)を開きます

2> IEからブラウザからURLアドレスを取得->ツール->インターネットオプション->接続-> LAN設定->アドレスを取得してURLを指定例:as http:// autocache .abc.com / と入力すると、ファイルが.pac形式でダウンロードされ、デスクトップに保存されます

3>テキストパッドで.pacファイルを開き、PROXYを識別します。

エディターでは、次のようになります。

return "PROXY web-proxy.ind.abc.com:8080; PROXY proxy.sgp.abc.com:8080";

5分間で動作しない mavenからbekurする称賛

ホストとポートを用意したら、これにアクセスしてください。

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("web-proxy.ind.abc.com", 8080));
        URLConnection connection = new URL(url).openConnection(proxy);
2
Norbert