10

我正在尝试通过 Eclipse 中的 java 程序使用从 wsdl 生成的客户端连接到 Web 服务。我通过代理服务器传递我的请求。但似乎该请求没有通过。相同的代理设置在 SoapUI 上运行良好。请在下面找到我设置的系统属性。

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);

Java程序抛出异常为java.net.UnknownHostException:

我错过了什么?

4

9 回答 9

9
java -Dhttp.proxyHost=proxyhostURL
     -Dhttp.proxyPort=proxyPortNumber
     -Dhttp.proxyUser=someUserName
     -Dhttp.proxyPassword=somePassword javaClassToRun

http://i4t.org/2007/05/04/java-http-proxy-settings/

于 2013-05-29T09:10:42.793 回答
6

如果您使用 HTTPS 连接 web 服务,则要设置的代理属性是

https.proxyHost
https.proxyPort

http://docs.oracle.com/javase/6/docs/technotes/guides/net/proxies.html

于 2013-03-18T14:31:22.490 回答
6

我使用以下代码(并且有效):

    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");
于 2013-01-10T12:39:56.007 回答
2

除了设置系统属性外,还使用 ​​java.net.Authenticator 来设置代理配置。

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);
于 2013-08-03T06:01:35.577 回答
2

您可以使用设置代理System.setProperty()

System.setProperty("http.proxyHost","122.183.139.107");
System.setProperty("http.proxyPort","8080");

如果你想删除

System.setProperty("http.proxyHost","");
System.setProperty("http.proxyPort","");
于 2017-12-29T07:11:26.860 回答
2

通过使用以下代码,我能够通过代理。

在 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");
于 2015-07-21T12:40:49.017 回答
2

我有同样的问题。只有以下代码适用于我设置代理。

System.setProperty("java.net.useSystemProxies", "true");
于 2018-05-17T08:52:41.403 回答
0

没有这样的属性http.proxySet

您需要在使用任何 HTTP URL 之前设置其他属性,之后更改它们没有任何效果。

如果您需要动态更改代理,请参阅 java.net.Proxy。

“明文连接?” 正是它所说的意思:您正在将 SSL 用于非 SSL 目标,可能是纯文本目标。

于 2013-01-10T12:32:47.800 回答
-5

在 Eclipse IDE 中,转到 Window->Preferences。在左侧的小方框中写入代理。您应该看到Network Connections,输入您将使用的请求的代理设置(HTTP 应该足够)。我相信无需在代码本身中设置代理即可解决您的问题。

于 2013-01-10T12:39:02.787 回答