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字段也是同樣的

相關文章
相關標籤/搜索