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 cette demande ne passe pas. Les mêmes paramètres de proxy fonctionnent bien sur SoapUI. Veuillez trouver ci-dessous les propriétés du 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 en tant que Java.net.UnknownHostException:
Qu'est-ce qui me manque?
Java -Dhttp.proxyHost=proxyhostURL
-Dhttp.proxyPort=proxyPortNumber
-Dhttp.proxyUser=someUserName
-Dhttp.proxyPassword=somePassword javaClassToRun
si vous vous connectez au service Web à l'aide de HTTPS, la propriété de proxy à définir est
https.proxyHost
https.proxyPort
( http://docs.Oracle.com/javase/6/docs/technotes/guides/net/proxies.html )
J'utilise le code suivant (et ça marche):
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");
Outre la définition des propriétés 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 eu le même problème. Juste le code suivant fonctionne pour moi pour configurer le proxy.
System.setProperty("Java.net.useSystemProxies", "true");
J'ai été capable de passer par le proxy en utilisant le 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 le proxy en utilisant System.setProperty()
System.setProperty("http.proxyHost","122.183.139.107");
System.setProperty("http.proxyPort","8080");
et si vous voulez enlever
System.setProperty("http.proxyHost","");
System.setProperty("http.proxyPort","");
Il n'existe pas de propriété telle que http.proxySet
.
Vous devez définir les autres propriétés avant d'utiliser des URL HTTP. Leur modification ultérieure n'a aucun effet.
Si vous devez modifier les mandataires de manière dynamique, voir Java.net.Proxy.
«Connexion en clair? signifie exactement ce qu'il dit: vous utilisez SSL pour une cible non SSL, probablement en texte brut.