回答:
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);
new PasswordAuthentication("domainName\\user", "password".toCharArray());
プロキシは、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);
commons-httpclient
ですか。Javaはプロキシと認証をサポートしているため(ここでは、stackoverflow.com / questions / 1626549 / … )、単純なケース(パブリックHTTPサーバーから1つのファイルを取得するなど)の場合、Apacheライブラリを使用する理由はありません。あなたのおすすめは何ですか?
systemProperties
はconnection
!では使用されません。
設定することもできます
-Djava.net.useSystemProxies=true
WindowsおよびLinuxでは、これはシステム設定を使用するため、自分で繰り返す必要はありません(DRY)
http://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html#Proxies
System.setProperty
ためhttps.proxyHost
とhttps.proxyPort
、いくつかの理由のためには、マスタードをカットされませんでした。
openConnectionの前に以下を設定します。
System.setProperty("http.proxyHost", "host");
System.setProperty("http.proxyPort", "port_number");
プロキシが認証を必要とする場合、
System.setProperty("http.proxyUser", "user");
System.setProperty("http.proxyPassword", "password");
Java 1.8以降の場合-Djdk.http.auth.tunneling.disabledSchemes=
、httpsで動作する基本認証でプロキシを作成するように設定する必要があります。
承認された回答は機能します...プロキシホストとポートがわかっている場合=)。ただし、プロキシホストとポートを探している場合は、以下の手順が役立つはずです。
自動構成されたプロキシが指定されている場合:
1> IE(または任意のブラウザー)を開く
2> IE-> Tools-> internet option-> connections-> LAN Settings-> get addressを使用してブラウザからURLアドレスを取得し、URLを指定します。例:http ://autocache.abc.com/として 入力し、aファイルは.pac形式でダウンロードされ、デスクトップに保存されます
3>テキストパッドで.pacファイルを開き、プロキシを識別します。
エディターでは、次のようになります。
"PROXY web-proxy.ind.abc.com:8080; PROXY proxy.sgp.abc.com:8080";を返します。
ホストとポートを取得したら、これにポップインして、準備完了です
Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("web-proxy.ind.abc.com", 8080));
URLConnection connection = new URL(url).openConnection(proxy);