1

我正在使用 CXF 库编写 SOAP 客户端,这里我的要求是将 SOAP 请求转移到另一个充当代理的 Web 服务。我使用以下代码在我的 SOAP 客户端中设置代理

WebService ss = new WebService();

WebServiceSoap port=ss.WebServiceSoap();

Client client = ClientProxy.getClient(port);

HTTPConduit http = (HTTPConduit) client.getConduit();

HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setProxyServer(System.getProperty("http.proxyHost","proxyserver.com"));
httpClientPolicy.setProxyServerPort(Integer.valueOf(System.getProperty("http.proxyPort","8080")).intValue());

httpClientPolicy.setConnectionTimeout(36000);

http.setClient(httpClientPolicy);

byte[] fileContent={'b','b'};

String res=port.submiFile(fileContent");

但是这段代码抛出了错误

“java.io.IOException:无法通过代理隧道。代理返回“HTTP/1.1 405 Method Not Allowed”。

根据我的调查,出现此错误是因为 CXF 库使用“CONNECT”

http 方法来隧道 SOAP 请求但是这个 CONNECT 方法

代理服务器(proxyserver.com)不提供实现。现在代理

服务器团队说我们只能提供“GET”和“POST”HTTP 方法。

这意味着我必须手动创建 SOAP 请求并使用 POST 或 GET 方法发送。但这是我们希望避免手动创建 SOAP 请求的方式。

所以我的问题是有没有办法摆脱这个或者我可以覆盖

“连接”方法?任何答案链接都会有所帮助。有关更多详细信息,请参阅附件。

4

1 回答 1

0

您没有在任何地方添加 SOAPAction

于 2015-10-05T13:29:57.370 回答