我正在使用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");
但是这段代码抛出了下面的错误
" . io .IOException:无法通过代理建立隧道。代理返回"HTTP/1.1 405方法不允许".
根据我的调查,这个错误是因为CXF库使用"CONNECT"而出现的
http方法来隧道SOAP请求,但是这个CONNECT方法
实现在代理服务器(proxyserver.com)不可用。现在代理
服务器团队说我们只能提供"GET"one_answers"POST" HTTP方法。
这意味着我必须手动创建SOAP请求并使用POST或GET方法发送。但是这是我们想要避免手工创建SOAP请求的方式。
我的问题是有没有办法去掉这个或者我可以重写
"连接"的方法?任何答案链接都会很有帮助。更多细节请见附件。
您没有在任何地方添加SOAPAction