使用URLEndpoint通过代理进行SOAP连接

时间:2011-02-08 00:19:38

标签: java url soap proxy

我必须更新以前从外部Web服务请求SOAP响应的java应用程序。此服务在防火墙之外,现在要求我们通过代理而不是直接访问URL。

目前,Java App使用URLEndpoint为URL提取字符串。通常当我通过代理获取URL时,我创建一个如下的URL:

URL url = new URL("http", "theproxy.com", 5555, finalUrl);

问题是URLEndpoint只为URL添加了一个字符串,我尝试使用toExternalForm()将URL转换为字符串,但它使URL格式不正确。

关于解决这个问题的任何想法?

编辑:我不能使用System.setProperty,因为它在tomcat中运行了一大堆其他Java应用程序。

第二次编辑:我无法设置系统属性,因为它将覆盖服务器上运行的所有其他应用程序,我不能使用jsocks作为我们通过squid代理运行的代理,它不支持socks4 / 5

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:8)

这不是代理的工作方式。代理的工作方式是您使用正常的URL:

http://example.com/service

而不是查找“example.com”和端口80,而是将消息发送到您的代理主机(http://theproxy.com:5555)。

使用http.proxyHost和http.proxyPort系统属性构建了代理处理。

所以在你的情况下你需要这样做:

System.setProperty("http.proxyHost", "theproxy.com");
System.setProperty("http.proxyPort", "5555");

然后,理想情况下,您的代码应该是“Just Work”。

Here是一个记录代理属性的页面。

答案 1 :(得分:0)

使用Apache HttpClient并执行this示例中的显示。

答案 2 :(得分:0)

关于具有单独代理设置的URL构造函数:

http://edn.embarcadero.com/article/29783

(抱歉没有评论权限)