I have a Java application that is trying to access a web service via http proxy. The Java app is 3rd party app for which we don\'t have access to source code.
Its la
A working example with Apache HttpClient 4.5.*
Note: It does not work unless you use HttpClients.custom().useSystemProperties().build();
System.setProperty("http.proxyHost" , "myhost");
System.setProperty("http.proxyPort" , "myport");
System.setProperty("http.proxyUser" , "myuser");
System.setProperty("http.proxyPassword" , "mypassword");
CloseableHttpClient httpclient = HttpClients.custom().useSystemProperties().build();
try {
HttpGet httpGet = new HttpGet("http://www.google.com");
CloseableHttpResponse httpResponse = httpclient.execute(httpGet);
try {
System.out.println(httpResponse.getStatusLine());
for (Header header : response.getAllHeaders()) {
System.out.println("header " + header.getName() + " - " + header.getValue());
}
String responseString = EntityUtils.toString(httpResponse.getEntity());
System.out.println("responseString :" + responseString);
} finally {
response.close();
}
} catch (Exception exception) {
exception.printStackTrace();
} finally {
httpclient.close();
}
Instead of using System.setProperty you can set the properties with
-Dhttp.proxyHost="myhost" -Dhttp.proxyPort="myport" -Dhttp.proxyUser=myuser -Dhttp.proxyPassword="mypassword"
Important: If you try to access a HTTPS service you have to change the properties to https It also does not work if you use https.* properties and you access a http URL
System.setProperty("https.proxyHost" , "myhost");
System.setProperty("https.proxyPort" , "myport");
System.setProperty("https.proxyUser" , "myuser");
System.setProperty("https.proxyPassword" , "mypassword");
CloseableHttpClient httpclient = HttpClients.custom().useSystemProperties().build();
try {
HttpGet httpGet = new HttpGet("https://www.google.com");
API: https://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/
Pure Java - without Apache HttpClient
You can set the same https.proxyHost etc properties if you use the java.net.HttpURLConnection class
Always respect using https.proxyHost etc for https://... connections and http.proxyHost etc for http://... connections!
String uri = "https://www.google.com/";
HttpURLConnection connection = (HttpURLConnection) new URL(uri).openConnection();
InputStream response = connection.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine; int x = 0;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
x++; if (x > 4) { break;}
}
in.close();
response.close();