繁体   English   中英

SOAP通过Java中的SOCKS代理进行调用

[英]SOAP calls through a SOCKS Proxy in Java

我有一种情况,我通过REST服务与供应商沟通。 在我们的组织内,有很多防火墙,做这种事情需要使用特定的SOCKS代理配置。
请注意,它必须是此SOCKS代理; HTTP代理在我们的环境中不起作用。
完成代理配置后,使用以下代码可以相对轻松地处理通过代理的连接:

URL url = new URL("https://url.for.the.web.service.com");
Proxy proxy = new Proxy(Proxy.Type.SOCKS,new InetSocketAddress("our.socks.proxy.server.com",1080));
HttpsURLConnection con = (HttpsURLConnection)url.openConnection(proxy);

我收到了额外的要求,要求为供应商提供一些额外的Web服务。 不幸的是,这些是供应商的旧处理,并且是作为SOAP服务完成的。
虽然我老了,头发花白了,但这是我第一次在客户端运行SOAP 使用我从您的站点获得的帮助(感谢站点btw;我一直用它来参考,包括通过REST实现和去年春天的第一轮SOCKS ),我能够生成我的SOAP代理类通过Eclipse。 但是当我尝试运行生成的代码来访问服务时,我直接进入防火墙,因为它没有在生成的代码中指定。

我一直在浏览它,我认为我已经确定了我需要更改的生成类,即从Axis客户端类Service扩展的WSDLName_Locator类。 虽然我可以在生成的代码中找到WSDL位置的URL对象,但是没有相应的连接可以连接我的SOCKS代理。 处理进入Axis处理的内部,我不知道是什么。 它也可以在BasicHttpBinding_IWSDLNameStub

我一直在谷歌搜索并查看Javadoc为生成的代码中使用的每个类,寻找代理的任何引用,我将空出来。 但是这很复杂,因为在SOAP术语中生成的代码本身被称为代理,所以我在我尝试的任何搜索中得到大量的误报,并且还因为所有最近的在线信息似乎都是与Android应用程序开发有关,我没有这样做。 AxisEngine和AxisEngineConfiguration类似乎很有希望,但我还没有找到一种方法来连接代理。

我的需要就是这样:在生成的SOAP代码中我可以在哪里以及如何对代理执行等效的附件,以便将这种链接带入Axis处理? 我希望以前有人这样做过。

我没有包含任何生成的代码,因为我需要对它进行模糊处理,无论如何都要运行它,因为它涵盖了许多服务,所以它很庞大,我的假设是生成的输出类似于从一个WSDL生成到下一个。 但我会提供所需的任何其他细节。

提前感谢您提供的任何帮助。

我再次尝试谷歌搜索,看看我的问题是否会出现在结果中...是的,就在顶部。 但也返回了这个问题的链接:

使用Java中的Windows代理设置调用SOAP Web服务

在该答案中,显示了将代理值设置为系统属性的技术,但问题与使用另一个类,ProxySelector有关,我怀疑这是为什么我的搜索结果为空。 我没有尝试过这种技术,因为当我去年春天做REST部分时,它没有用于设置SOCKS代理。

所以简单地指定:

    System.setProperty("socksProxyHost","our.socks.proxy.server.com");
    System.setProperty("socksProxyPort","1080");

在调用Web服务调用之前,只需要一切。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM