JAVA以这种方式调用web服务,需要注意的地方:
1 .服务器无法识别HTTP标头soap操作的值:
症状1 :
web服务ASP.NET APP应用程序已部署到服务器的缺省目录中,并且IE使用HTTP:发生“服务器无法识别http标头SOAPAction的值”错误。
症状2 :
在Java平台上调用. netweb服务的服务时,将显示“服务器无法识别HTTP标头SOAPAction的值”。
症状3 :
在Java平台下调用. net web服务,并且可能没有数据。
解决方案:
. NET的web服务类,即. asmx文件下的类的属性[ soapdocumentservice (路由样式=soapserviceroutingstyle.request element )
小知识:
什么是soap动作? 在WSDL中如何工作?
soap action http请求标头用于标识SOAP HTTP请求的目标,其值为URI地址。 SOAP发送不必是格式、URI特性或可解析的。 在这种情况下,在发送HTTP SOAP请求时,该HTTP客户端必须使用/指定soap action http请求标头。
服务端可以使用SOAPAction header的内容,包括防火墙正确过滤基于HTTP的SOAP请求消息的场景。 SOAPAction header的值为空字符串“”表示SOAP消息的目标由HTTP请求的URI标识。 如果没有值,则表示没有指定消息的发送目标。
补充说明:
在. NET环境中调用. netweb服务时,也可以通过这种方式解决“XMLweb服务的所有方法都显示SOAPAction值不唯一的错误”。
为了允许Java调用web服务的方法,用. NET编写的web服务的每个方法都必须声明为Rpc方法。 也就是说,添加“[SoapRpcMethod.]”。
例如,[WebMethod]
[ soaprpcmethod (use=soapbindinguse.literal,action=http://tempuri.org/hello world ',请求名称=' 3358 tempurd '
3 .在返回值、参数的应对上:
请尽量将webservice方法的返回值、参数设置为字符串(String ),以避免使用复杂的对象类型,从而方便网络上的传输。 避免了复杂对象类型难以转换的问题。 如果返回类型为字符串数组类型,则可以将返回类型设置为org.Apache.axis.encoding.xmltype.soap _ vector或java.lang.String[].class。
利用xfire调用web服务
XFire是新一代的Java Web服务引擎,使用XFire可以简化在javaee APP应用程序中发布Web服务的过程。 与其他Web服务引擎相比,XFire配置非常简单,非常容易与Spring集成,Java开发人员终于可以获得与. Net开发人员相同的开发效率。
核心代码: