axis,axis2呼叫.net的webservice
1、axis呼叫.net的webservice
Java程式碼
- package test;
- import java.net.URL;
- import javax.xml.namespace.QName;
- import org.apache.axis.client.Call;
- import org.apache.axis.client.Service;
- import org.apache.axis.encoding.XMLType;
-
import
- public class Test {
- public static void test() throws Exception{
- Service service = new Service();
- Call call = null;
- try {
- call = (Call) service.createCall();
-
call.setTargetEndpointAddress(new URL("http://www.webxml.com.cn/WebServices/WeatherWebService.asmx"
- call.setOperationName(new QName("http://WebXml.com.cn/","getWeatherbyCityName"));
- call.addParameter(new QName("http://WebXml.com.cn/", "theCityName"),XMLType.SOAP_VECTOR,ParameterMode.IN);
- call.setReturnType(XMLType.SOAP_VECTOR);
-
call.setUseSOAPAction(true
- call.setSOAPActionURI("http://WebXml.com.cn/getWeatherbyCityName");
- System.out.println(call.invoke(new Object[]{"廣州"}));
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args) throws Exception{
- test();
- }
- }
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程式碼
- import cn.com.webxml.WeatherWebServiceStub;
- import cn.com.webxml.WeatherWebServiceStub.ArrayOfString;
- import cn.com.webxml.WeatherWebServiceStub.GetWeatherbyCityName;
- public class Test {
- public static void test1(){
- try{
- WeatherWebServiceStub stub = new WeatherWebServiceStub();
- stub._getServiceClient().getOptions().setProperty(
- org.apache.axis2.transport.http.HTTPConstants.CHUNKED,
- Boolean.FALSE);
- GetWeatherbyCityName city = new GetWeatherbyCityName();
- city.setTheCityName("廣州");
- ArrayOfString array = stub.getWeatherbyCityName(city).getGetWeatherbyCityNameResult();
- String[] str = array.getString();
- for(String s : str){
- System.out.println(s);
- }
- }catch(Exception e){
- e.printStackTrace();
- }
- }
- /**
- * @param args
- */
- public static void main(String[] args) throws Exception{
- test1();
- }
- }
需要注意的是這個類GetWeatherbyCityName,這個本來是.net webservice中的一個方法,如下
Java程式碼
- POST /WebServices/WeatherWebService.asmx HTTP/1.1
- Host: www.webxml.com.cn
- Content-Type: text/xml; charset=utf-8
- Content-Length: length
- SOAPAction: "http://WebXml.com.cn/getWeatherbyCityName"
- <?xml version="1.0" encoding="utf-8"?>
- <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/">
- <soap:Body>
- <getWeatherbyCityName xmlns="http://WebXml.com.cn/">
- <theCityName>string</theCityName>
- </getWeatherbyCityName>
- </soap:Body>
- </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