很多时候,Java应用程序需要连接到Internet.最常见的示例发生在读取XML文件并需要下载其架构时.
我在代理服务器后面.如何设置JVM以使用代理?
我确实看到了关于为JVM设置代理的问题,但我想问的是如何利用已经配置的代理(在Windows上).
这是我的问题的演示:
- 转到控制面板 - > Java并设置代理地址.
- 运行以下简单的applet代码(我正在使用Eclipse IDE):
import java.awt.Graphics;
import javax.swing.JApplet;
import java.util.*;
public class Stacklet extends JApplet {
private String message;
public void init(){
Properties props = System.getProperties();
message = props.getProperty("http.proxyHost", "NONE");
message = (message.length() == 0)? "NONE": message;
}
public void paint(Graphics g)
{
g.drawString(message, 20, 20);
}
}
Run Code Online (Sandbox Code Playgroud)
Applet显示"NONE",而不考虑您在Java控制面板中放置的设置.如果Windows代理设置(通常在Internet Explorer中设置)是我可以确定的,但在Java控制面板中执行额外的配置步骤仍然是可接受的解决方案,那将是最好的.
谢谢!
我的Internet Explorer设置为具有用于Web访问的自动代理文件(所谓的PAC).有没有办法在我的Java程序中使用它呢?
我的Java代码似乎根本不使用代理.
ArrayList<Proxy> ar = new ArrayList<Proxy>(ProxySelector.getDefault().select(new URI("http://service.myurlforproxy.com")));
for(Proxy p : ar){
System.out.println(p.toString()); //output is just DIRECT T.T it should be PROXY.
}
Run Code Online (Sandbox Code Playgroud)
我还在Java控制面板(Control-> Java)上设置了我的代理脚本,但结果相同.我发现没有办法以编程方式为Java设置PAC文件.
人们使用http.proxyHost for System.setProperties(..),但这仅用于设置代理主机,而不是代理脚本(PAC文件).
我正在接管java Web服务客户端的开发,为了测试进化,我必须从远程Web服务服务器(嵌入在tomcat实例中运行的Apache Axis2中)中请求一个方法.
首先,我使用服务器提供的WSDL通过SOAP UI请求了该方法.它工作正常.
现在我尝试通过我的Java Web服务客户端请求该方法,但我无法连接到服务器,即使使用SOAP UI测试证明一切都很好.
java Web服务客户端依赖于Spring-WS.
// Setting the kycScoreRequest
...
// Trying to connect and to get the kycScoreResponse
KycScoreResponse kycScoreResponse = (KycScoreResponse) getWebServiceTemplate().marshalSendAndReceive(kycScoreRequest);
Run Code Online (Sandbox Code Playgroud)
[main] DEBUG com.foo.AbstractMain - org.springframework.ws.client.WebServiceIOException: I/O error: Connection timed out: connect; nested exception is java.net.ConnectException: Connection timed out: connect
at org.springframework.ws.client.core.WebServiceTemplate.sendAndReceive(WebServiceTemplate.java:545)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:386)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:380)
at org.springframework.ws.client.core.WebServiceTemplate.marshalSendAndReceive(WebServiceTemplate.java:372)
at com.foo.MainKycScore.getReturn(MainKycScore.java:37)
at com.foo.MainKycScore.main(MainKycScore.java:244)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
at …Run Code Online (Sandbox Code Playgroud) 我想在Solaris上配置Java代理设置以使用代理自动配置(PAC)脚本.
我已经找到了使用Java控制面板在Windows机器上进行设置的说明,但是在Solaris Java安装上找不到在何处/如何进行相同的设置更改时遇到了问题.
我想使用代理自动配置(PAC)脚本,而不是手动设置每个连接的代理信息,或使用单个代理.我需要为不同类型的URL利用多个代理.