1. 程式人生 > >axis,axis2呼叫.net的webservice

axis,axis2呼叫.net的webservice

今天一個朋友諮詢java呼叫.net的webservice功能,折騰了2個小時,也都折騰出來了,貼出來,希望用到的朋友少走彎路 
1、axis呼叫.net的webservice 
Java程式碼  收藏程式碼
  1. package test;  
  2. import java.net.URL;  
  3. import javax.xml.namespace.QName;  
  4. import org.apache.axis.client.Call;  
  5. import org.apache.axis.client.Service;  
  6. import org.apache.axis.encoding.XMLType;  
  7. import
     javax.xml.rpc.ParameterMode;  
  8. public class Test {  
  9.     public static void test() throws Exception{  
  10.         Service service = new Service();  
  11.         Call call = null;  
  12.           try {  
  13.               call = (Call) service.createCall();  
  14.               call.setTargetEndpointAddress(new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"
    ));  
  15.               call.setOperationName(new QName("http://WebXml.com.cn/","getWeatherbyCityName"));  
  16.               call.addParameter(new QName("http://WebXml.com.cn/""theCityName"),XMLType.SOAP_VECTOR,ParameterMode.IN);  
  17.               call.setReturnType(XMLType.SOAP_VECTOR);  
  18.               call.setUseSOAPAction(true
    );  
  19.               call.setSOAPActionURI("http://WebXml.com.cn/getWeatherbyCityName");  
  20.               System.out.println(call.invoke(new Object[]{"廣州"}));  
  21.           } catch (Exception e) {  
  22.               e.printStackTrace();  
  23.           }  
  24.     }  
  25.     /** 
  26.      * @param args 
  27.      */  
  28.     public static void main(String[] args) throws Exception{  
  29.         test();  
  30.     }  
  31. }  


2、axis2呼叫.net的webservice 
   axis2呼叫不需要寫那麼多,按照下面的步驟,一步一步來,簡單你都想象不到 
   1、下載axis2(到apache官網下載www.apache.org) 
   2、我下載的是axis2-1.5-bin.zip,解壓到當前資料夾 
   3、進入bin目錄(F:\study\java\service\axis2\axis2-1.5\bin) 
   4、開啟cmd,進入第3步的bin目錄,輸入wsdl2java.bat -uri http://www.webxml.c 
om.cn/WebServices/WeatherWebService.asmx?wsdl,回車 
   5、之後會在bin目錄下生成一個src目錄,將src目錄下的兩個類考到eclipse開發目錄下 
   6、建一個測試類Test,程式碼如下 
Java程式碼  收藏程式碼
  1. import cn.com.webxml.WeatherWebServiceStub;  
  2. import cn.com.webxml.WeatherWebServiceStub.ArrayOfString;  
  3. import cn.com.webxml.WeatherWebServiceStub.GetWeatherbyCityName;  
  4. public class Test {  
  5.     public static void test1(){  
  6.         try{  
  7.             WeatherWebServiceStub stub = new WeatherWebServiceStub();  
  8.             stub._getServiceClient().getOptions().setProperty(    
  9.                     org.apache.axis2.transport.http.HTTPConstants.CHUNKED,    
  10.                     Boolean.FALSE);  
  11.             GetWeatherbyCityName city = new GetWeatherbyCityName();  
  12.             city.setTheCityName("廣州");  
  13.             ArrayOfString array = stub.getWeatherbyCityName(city).getGetWeatherbyCityNameResult();  
  14.             String[] str = array.getString();  
  15.             for(String s : str){  
  16.                 System.out.println(s);  
  17.             }  
  18.         }catch(Exception e){  
  19.             e.printStackTrace();  
  20.         }  
  21.     }  
  22.     /** 
  23.      * @param args 
  24.      */  
  25.     public static void main(String[] args) throws Exception{  
  26.         test1();  
  27.     }  
  28. }  

需要注意的是這個類GetWeatherbyCityName,這個本來是.net webservice中的一個方法,如下 
Java程式碼  收藏程式碼
  1. POST /WebServices/WeatherWebService.asmx HTTP/1.1  
  2. Host: www.webxml.com.cn  
  3. Content-Type: text/xml; charset=utf-8  
  4. Content-Length: length  
  5. SOAPAction: "http://WebXml.com.cn/getWeatherbyCityName"  
  6. <?xml version="1.0" encoding="utf-8"?>  
  7. <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">  
  8.   <soap:Body>  
  9.     <getWeatherbyCityName xmlns="http://WebXml.com.cn/">  
  10.       <theCityName>string</theCityName>  
  11.     </getWeatherbyCityName>  
  12.   </soap:Body>  
  13. </soap:Envelope>  

用axis2生成java程式碼後,會自動生成一個對應的物件,webservice需要傳遞的引數,可以通過對這個物件賦值操作完成,如上面,我要查廣州的天氣,就設定為city.setTheCityName("廣州"); 
注意,關鍵的地方
由於.net webservice中返回的是ArrayOfString,java中沒有這個物件,所以axis2會自動生成這個物件,然後轉換成對應的陣列即可,如String[] str = array.getString();在axis版本中,使用的是返回型別,但是返回型別設定其他的比如String等都會報錯,只能設定成VECTOR,即call.setReturnType(XMLType.SOAP_VECTOR),如果只返回一個字串,可以直接使用STRING;這樣才能確保返回正確。 

比較兩個版本,還是覺得axis2使用方便 

轉自http://cqyqing.iteye.com/blog/1668227

相關推薦

axis,axis2呼叫.net的webservice

今天一個朋友諮詢java呼叫.net的webservice功能,折騰了2個小時,也都折騰出來了,貼出來,希望用到的朋友少走彎路 1、axis呼叫.net的webservice  Java程式碼   package test;   import java.net.URL

使用axis2呼叫web service

使用axis2生成客戶端程式碼 下載axis2 , 點選這裡, 選擇 Binary distribution 下載後解壓,解壓進入到bin目錄 執行命令生成客戶端程式碼 -uri: 後可以接wsd

通用的webService(CXF、Axis呼叫工具類(無強制依賴)

要支援Axis需要這麼幾個不常見的依賴: <dependency> <groupId>org.apache.axis</groupId> <artifactId>axis</artifactId>

Java,Axis方式呼叫WebService介面

package com.demo.modules.si.util; import org.apache.axis.client.Call; import javax.xml.rpc.ParameterMode; import org.apache.axis.client.S

Java,AXIS,webService 呼叫 完整例項 xml 入參出參

* @param model * @return */ @ResponseBody @RequestMapping(value = "getDbPatientInfo" ) public String listForGds(String message) {

java通過axis2呼叫SAP介面

將下載下來的zip檔案解壓 訪問SAP介面連線,返回介面資料xml,並將其儲存,字尾名改為wsdl(經過測試後也可不改) 將剛才的wsdl檔案放到axis2的bin目錄下(這個可根據自己習慣調整,可

axis方式呼叫WebService介面、xml轉json

axis方式呼叫WebService介面 xml轉json 一、引入pom檔案或jar包 <dependency> <groupId>org.apach

axis2呼叫 .net的webservice asmx

源自: http://cqyqing.iteye.com/blog/1668227    1、下載axis2(到apache官網下載www.apache.org)    2、我下載的是axis2-1.5-bin.zip,解壓到當前資料夾  &nb

Axis2呼叫webservice Client--RPCServiceClient

params.addElement(new Parameter("ifUser", String.class, USERNAME,null)); params.addElement(new Parameter("ifPass", String.class, PSW, null)); params.addEle

Java利用Axis遠端呼叫WebService介面

準備工作:   主要依賴的包:   1.axis.jar   官網:http://axis.apache.org/axis/   2.jaxrpc.jar   下載地址:http://www.java2s.com/Code/Jar/j/Downloadjaxrpcjar.htm 說明:   在拿到wsdl地

Axis2呼叫webservice Client

Axis2呼叫webservice,很多人和網上都使用的RPCServiceClient進行呼叫webservice,但是有時候並不是一定都滿足需求,接下來會展示下RPCServiceClient的簡單使用,和當無法滿足需求時候怎麼使用serviceClient。 首先展示

使用axis2呼叫sap生成的webservice(帶使用者密碼認證)

AxisFault  faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException  faultSubcode:   faultString: org.xml.sax.SAXException: Bad envelope

Java使用axis2呼叫wsdl形式的webservice

依賴架包: axis.jar、jaxrpc.jar、commons-logging-1.0.4.jar、commons-discovery-0.2.jar、wsdl4j-1.5.1.jar 相關程式碼: public final class Outboun

多次使用axis2呼叫webservice後,出現Timeout waiting for connection

在Axis的webservice中多次呼叫webservice後,後臺報timeout錯誤,如下所示: org.apache.commons.httpclient.ConnectionPoolTimeoutException: Timeout waitin

使用Axis2開發webservice服務端介面+axis開發的客戶端呼叫

之前用了cxf框架開發了服務端。為了區別二者的特點,區分了解。今天用axis2框架開發服務端。這裡感謝博主javawebsoa的文章:用AXIS2釋出WebService的方法。這裡自己在記錄一下自己的開發思路。 環境: jdk:發現要求不高。1.5

使用axis呼叫webservice時,服務端接收到的引數為null

通過axis呼叫,需要注意兩點: 1)在call.setOperationName是必須通過Qname來制定namespaceURI 2)在設定引數時,不使用服務端定義的引數名,而是arg0~argN來定義,也不需制定namespaceURI,上述程式碼 call.addParamete

利用axis呼叫webservice介面

一.首先把wsdl檔案放入eclipse中某個專案中的src目錄下 二.右鍵彈出webservice,然後點選webservice選單,選中genernator client ,選擇axis生成Java檔案 三,然後呼叫. 呼叫說明(其中一種的呼叫方式): DHSFServiceLocator s

使用axis呼叫webservice介面

package msdev.yd.interfaceRequest; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.rpc.ParameterMode; import org.apache.ax

Axis呼叫webservice介面例子

public String invokeByAxis(String requestParam,String method) { String result = ""; Service service = new Service(); String endPoint = "http://******:8088/

webservice服務端釋出與呼叫 JAX-WS cxf axis2

之前專案中需要用到webservice的釋出最後做出了幾個例子如下: 1 基礎 JAX-WS例項 介面釋出: package com.test; import javax.jws.WebMethod; import javax.jws.WebSer