我正在使用 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 请求的方式。
所以我的问题是有没有办法摆脱这个或者我可以覆盖
“连接”方法?任何答案链接都会有所帮助。有关更多详细信息,请参阅附件。