首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

用java调用https webservice,该怎么处理

2012-03-14 
用java调用https webservice最近在做一个调用webservice的客户端,之前做过,以为很容易,但这过程中遇到的一

用java调用https webservice
最近在做一个调用webservice的客户端,之前做过,以为很容易,但这过程中遇到的一些问题让我发现自己懂的还是太少。

  webservice的服务端是需要证书认证的,证书已经发给我了,cer格式的,使用java的keytool工具提取证书后,在调用webservice时执行以下语句:

  System.setProperty("javax.net.ssl.trustStore", "xxxx.truststore");

告诉服务端我客户端是有证书的,目前来看没问题。

  接下来,我用axis2的wsdl2java生成了客户端的代码,结果一执行就出现如下错误:

  <?xml version="1.0" encoding="UTF-8" ?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>[ISS.0088.9109] SOAP is only supported using HTTP POST protocol</faultstring>
<faultactor>http://bcv50s6e.vz.cit.alcatel.fr:8657/soap/WS_UPL</faultactor>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

  在soap的开发文档中查到这个错,是因为请求的soap message格式错误,文档地址:http://documentation.softwareag.com/webmethods/wmsuite7/Developer/Guides/7-1-1_SOAP_Developers_Guide.pdf(89页)

  这时对方要求我把soap request message发过去,我对webservice只是停留在用的阶段,会用axis,xfire之类的工具写服务端和客户端,但是对soap就是一知半解了,上网找资料,问同事,折腾了半天,总算把request message找出来了。同事给的方法是用tcp monitor之类的工具,但是webservice是https格式的,不能用,后来在生成的客户端代码里把SOAPEnvelope.toString()打出来才得到,如下:

 <?xml version='1.0' encoding='utf-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns1:UPLGenerate xmlns:ns1="http://www.alcatel-lucent.com/webService/WS_UPL">
<OperationCode>1</OperationCode>
<Plant>2</Plant>
<QuoteNumber>3</QuoteNumber>
<UserID>4</UserID>
<IncludePriceType>5</IncludePriceType>
</ns1:UPLGenerate>
</soapenv:Body>
</soapenv:Envelope>

  我猜测,请求message的格式是不是应该和错误返回的xml一样?如果是的话,我就要自定义请求message的格式了,求各位帮忙!

[解决办法]
你是把wsdl下载到本地后再用来生成client的吗?不是的话,可以试试
还有axis2生成客户端有四种方法,你也可以试试别的方法?

[解决办法]
最近在做一个调用webservice的客户端,之前做过,以为很容易,但这过程中遇到的一些问题让我发现自己懂的还是太少。 

这个跟LZ同感啊,,,现在我也挠头呢.
我想知道LZ的这个信息(SOAP-Fault)是进行什么设置了?才会出现???

<?xml version="1.0" encoding="UTF-8" ?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<SOAP-ENV:Body> 
<SOAP-ENV:Fault> 
<faultcode>SOAP-ENV:Client </faultcode> 
<faultstring>[ISS.0088.9109] SOAP is only supported using HTTP POST protocol </faultstring> 
<faultactor>http://bcv50s6e.vz.cit.alcatel.fr:8657/soap/WS_UPL </faultactor> 
</SOAP-ENV:Fault> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope>

热点排行