axis2设置soap1.1或soap1.2协议

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了axis2设置soap1.1或soap1.2协议相关的知识,希望对你有一定的参考价值。

现在Axis、Axis2都是同时支持SOAP1.1和SOAP1.2的。即在服务器端发布一个WebService服务之后,客户端既可以通过SOAP1.1版本来访问服务器的服务,也可以通过SOAP1.2版本来访问服务器的服务。
    如果客户端不指定SOAP版本,则无论是用Axis还是Axis2编写的客户端,默认使用的都是SOAP1.1版本,如果某个服务端仅支持SOAP1.2的,则在服务的交互过程中会报错。因此较好的办法是事先知道服务器端所支持的SOAP版本,或者通过判断服务器端的SOAP版本,来确定使用哪个版本的SOAP发送请求。
    以下将客户端指定的SOAP协议版本代码整理一下,以备以后查阅。
Axis:
    org.apache.axis.client.Service service = new org.apache.axis.client.Service();
    org.apache.axis.client.Call call = service.createCall();
    //默认版本为SOAP1.1
    //以下设置为SOAP1.2
    call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP12_CONSTANTS);
    //以下设置为SOAP1.1
    call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
    //其他设置和调用代码
    //call.setXXX(...)
    //call.invoke(...)
Axis2:
    org.apache.axis2.rpc.client.RPCServiceClient serviceClient = new org.apache.axis2.rpc.client.RPCServiceClient();
    org.apache.axis2.client.Options options = serviceClient.getOptions();
    //默认版本为SOAP1.1
    //以下设置为SOAP1.2
    options.setSoapVersionURI(org.apache.axiom.soap.SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
    //以下设置为SOAP1.1
    options.setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
    //其他设置和调用代码
    //options.setXXX(...)
    //serviceClient.invokeBlocking(...)

通过wsdl2java 命令 生成的stub客户端 设置soap协议
    //以下设置为SOAP1.2
    options.setSoapVersionURI(org.apache.axiom.soap.SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
xxxStub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI);
    //以下设置为SOAP1.1
xxxStub._getServiceClient().getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);

 

以上是关于axis2设置soap1.1或soap1.2协议的主要内容,如果未能解决你的问题,请参考以下文章

SOAP1.1 VS SOAP1.2

Axis2的下载和安装

web service011——使用soap1.1和soap1.2发布和调用服务

Eclipse + Apache Axis2 发布RESTful WebService基础知识

soap1.1与soap1.2

iOS--对接soap协议接口