FTPC使用Axis2建立WebService

以往在FTPC里建立WebService是用jaxrpc,可是此次服务端的返回解析不了,而使用jaxrpc对返回值本身解析也很差操做,测试过axis2以后,以为还不错。java

一、使用wsdl2java自动生成java代码apache

进入Windows控制台,执行以下命令来生成WebService的客户端代码:网络

%AXIS2_HOME%\bin\wsdl2java -uri http://127.0.0.1:8080/awyb/services/mySoapService?wsdl -p client -s -o stubapp

其中-uri参数指定了wsdl文件的路径,能够是本地路径,也能够是网络路径。-p参数指定了生成的Java类的包名,-o参数指定了生成的一系列文件保存的根目录。在执行完上面的命令后,咱们就会发如今当前目录下多了个stub目录,在./stub/src/client目录能够找到对应的客户端调用文件,这些文件复杂调用WebService,咱们能够在程序中直接使用这些文件dom

二、引入Axis2的jar包,开发测试的时候能够建library,部署的时候放到SOS的lib下面便可,不用担忧jar包冲突测试

三、须要引入的jarcode

其中引入dom4j是由于解析服务端返回的报文出错,本身手写的把XML转换成对象的解析语句要用到。xml

其余的是axis2自己要用到的jar包对象

四、服务端反应收不到请求对象,要求将HTTP请求头设为:Content-Type: text/xml; charset=UTF-8  开发

修改方法:

_serviceClient.getOptions().setSoapVersionURI(org.apache.axiom.soap.SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);

若是使用SOAP11Constants(SOAP 1.1),HTTP请求头以下:

  1. POST /test HTTP/1.1  
  2. Content-Type: text/xml; charset=UTF-8  
  3. SOAPAction: "urn:add"  
  4. User-Agent: Axis2  
  5. Host: 146.11.42.87:9876  
  6. Transfer-Encoding: chunked  

若是使用SOAP12Constants(SOAP 1.2) ,HTTP请求头以下:

  1. POST /test HTTP/1.1  
  2. Content-Type: application/soap+xml; charset=UTF-8; action="urn:add"  
  3. User-Agent: Axis2  
  4. Host: 146.11.42.87:9876  
  5. Transfer-Encoding: chunked  

若是不设置这个参数,HTTP请求头以下(和SOAP 1.1是同样的,能够确认默认使用SOAP 1.1):

  1. POST /test HTTP/1.1  
  2. Content-Type: text/xml; charset=UTF-8  
  3. SOAPAction: "urn:add"  
  4. User-Agent: Axis2  
  5. Host: 146.11.42.87:9876  
  6. Transfer-Encoding: chunked  

HTTP响应头中的Content-Type字段也是同样的

相关文章
相关标签/搜索