Paramètres de proxy dans un programme java
J'essaie de me connecter à un service Web avec un client généré à partir de wsdl via un programme java dans eclipse. Je passe ma demande via un serveur proxy. Mais il semble que la demande ne passe pas. Les mêmes paramètres proxy fonctionnent correctement sur SoapUI. Veuillez trouver ci-dessous les propriétés système définies par moi.
Properties props= new Properties(System.getProperties());
props.put("http.proxySet", "true");
props.put("http.proxyHost", "10.x.x.x");
props.put("http.proxyPort", "80");
props.put("http.proxyUser","domainName\\xxx");
props.put("http.proxyPassword","xxx");
Properties newprops = new Properties(props);
Le programme Java lève une exception comme java.net.UnknownHostException:
Qu'est-ce que je suis absent?
9 answers
java -Dhttp.proxyHost=proxyhostURL
-Dhttp.proxyPort=proxyPortNumber
-Dhttp.proxyUser=someUserName
-Dhttp.proxyPassword=somePassword javaClassToRun
J'utilise le code suivant (et cela fonctionne):
String host = "10.x.x.x";
String port = "80";
System.out.println("Using proxy: " + host + ":" + port);
System.setProperty("http.proxyHost", host);
System.setProperty("http.proxyPort", port);
System.setProperty("http.nonProxyHosts", "localhost|127.0.0.1");
Si vous connectez un service Web en utilisant HTTPS, la propriété proxy à définir est
https.proxyHost
https.proxyPort
(http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html)
En plus de définir les propriétés du système, utilisez java.net.Authenticator pour définir également la configuration du proxy.
final String authUser = "user";
final String authPassword = "password";
Authenticator.setDefault(
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
authUser, authPassword.toCharArray());
}
}
);
System.setProperty("http.proxyUser", authUser);
System.setProperty("http.proxyPassword", authPassword);
J'ai pu passer par le proxy en utilisant le morceau de code suivant.
Ajout de nouvelles lignes au code Snehasish
final String authUser = "username";
final String authPassword = "password";
Authenticator.setDefault(
new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(
authUser, authPassword.toCharArray());
}
}
);
url = new URL("http://www.somewebsite.com/sendmyrequest");
connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
connection.setDoOutput(true);
connection.setRequestMethod("POST");
connection.setFollowRedirects(true);
System.getProperties().put("http.proxyHost", "proxy.xyz.com");
System.getProperties().put("http.proxyPort", "portNumber");
System.setProperty("http.proxyUser", authUser);
System.setProperty("http.proxyPassword", authPassword);
System.getProperties().put("http.proxySet", "true");
Vous pouvez définir un proxy en utilisant System.setProperty()
System.setProperty("http.proxyHost","122.183.139.107");
System.setProperty("http.proxyPort","8080");
Et si vous voulez supprimer
System.setProperty("http.proxyHost","");
System.setProperty("http.proxyPort","");
J'ai eu le même problème. Juste le code suivant fonctionne pour moi pour définir le proxy.
System.setProperty("java.net.useSystemProxies", "true");
Il n'y a pas de propriété telle que http.proxySet
.
Vous devez définir les autres propriétés avant d'utiliser des URL HTTP, et les modifier par la suite n'a aucun effet.
Si vous devez modifier dynamiquement les proxys, consultez java. net. Proxy.
'Connexion en texte brut?'signifie exactement ce qu'il dit: vous utilisez SSL vers une cible non SSL, probablement en texte brut.
Dans eclipse go, allez dans Window->Preferences. Il écritproxy dans la petite boîte sur le côté gauche. Vous devriez voir Connexions réseau , entrez le paramètre proxy pour les requêtes (HTTP devrait être suffisant) que vous utiliserez. Je crois que cela vous résoudra le problème sans définir le proxy à l'intérieur du code lui-même.