中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java調用wsdl接口的方法有哪些

發布時間:2023-03-29 10:19:17 來源:億速云 閱讀:219 作者:iii 欄目:開發技術

本篇內容介紹了“Java調用wsdl接口的方法有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、AXIS調用遠程WebService,以國內手機號歸屬地查詢為例 

1、wsdl地址:http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

2、導入依賴:

使用axis遠程調用webService需要使用到axis、jaxrpc-api、commons-logging、commons-discovery等jar包。方便起見可以新建maven項目,在pom中導入依賴

    <dependencies>
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>commons-discovery</groupId>
            <artifactId>commons-discovery</artifactId>
            <version>0.5</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-logging</groupId>
                    <artifactId>commons-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis-jaxrpc</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis-saaj</artifactId>
            <version>1.4</version>
        </dependency>
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>1.6.3</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>
    </dependencies>

3、調用有入參的webservice接口

閱讀wsdl文件,我們可以了解方法名、參數和返回類型

<wsdl:operation name="getMobileCodeInfo">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><br /><h4>獲得國內手機號碼歸屬地省份、地區和手機卡類型信息</h4><p>輸入參數:mobileCode = 字符串(手機號碼,最少前7位數字),userID = 字符串(商業用戶ID) 免費用戶為空字符串;返回數據:字符串(手機號碼:省份 城市 手機卡類型)。</p><br /></wsdl:documentation>
<wsdl:input message="tns:getMobileCodeInfoSoapIn"/>
<wsdl:output message="tns:getMobileCodeInfoSoapOut"/>
</wsdl:operation>

方法名為:getMobileCodeInfo

參數有兩個:mobileCode手機號碼,字符串類型;userID用戶id,字符串類型(可以為空)

返回類型為字符串

Java調用代碼

public static void getMobileCodeInfo() throws ServiceException, RemoteException {
    Service service = new Service();
    Call call = (Call) service.createCall();
    // wsdl完整地址
    call.setTargetEndpointAddress("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");
    /**
     * 設置方法名
     * new QName(String namespaceURI, String localPart) namespaceURI即為wsdl中的targetNamespace, localPart即為接口名
     */
    call.setOperationName(new QName("http://WebXml.com.cn/", "getMobileCodeInfo"));
    /**
     * 添加參數
     * addParameter方法的參數包括:參數名(namespace+參數名)、參數類型、ParameterMode(入參即為IN)
     */
    call.addParameter(new QName("http://WebXml.com.cn/", "mobileCode"), XMLType.XSD_STRING, ParameterMode.IN);
    call.setUseSOAPAction(true);
    // SOAPActionURI格式為targetNamespace+方法名
    call.setSOAPActionURI("http://WebXml.com.cn/getMobileCodeInfo");
    // 指定返回值類型,為字符串
    call.setReturnType(XMLType.XSD_STRING);
    call.setReturnClass(java.lang.String.class);
    String result = (String) call.invoke(new Object[]{"手機號碼"});
    System.out.println(result);
}

4、調用無參的webservice接口

調用無參的webservice接口無需添加參數,并且在invoke方法中傳入的是一個空的對象數組

T result = (T)call.invoke(new Object[]{});

 閱讀wsdl文件,了解方法名、參數和返回類型

<wsdl:operation name="getDatabaseInfo">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><br /><h4>獲得國內手機號碼歸屬地數據庫信息</h4><p>輸入參數:無;返回數據:一維字符串數組(省份 城市 記錄數量)。</p><br /></wsdl:documentation>
<wsdl:input message="tns:getDatabaseInfoSoapIn"/>
<wsdl:output message="tns:getDatabaseInfoSoapOut"/>
</wsdl:operation>

方法名:getDatabaseInfo,參數:無,返回類型:一維字符串數組

Java調用代碼

public static void getDatabaseInfo() throws ServiceException, RemoteException {
    Service service = new Service();
    Call call = (Call) service.createCall();
    call.setTargetEndpointAddress("http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl");   //?wsdl
    call.setOperationName(new QName("http://WebXml.com.cn/", "getDatabaseInfo"));
    call.setUseSOAPAction(true);
    call.setSOAPActionURI("http://WebXml.com.cn/getDatabaseInfo");
    call.setReturnType(XMLType.XSD_UNSIGNEDBYTE);
    call.setReturnClass(java.lang.String[].class);
    String[] returnContext = (String[]) call.invoke(new Object[]{});
    for (String s : returnContext) {
        System.out.println(s);
    }
}

二、使用wsimport方法將wsdl轉換為Java接口

wsimport命令是JDK自帶的命令,它能夠根據服務端說明書(wsdl)生成對應的本地java代碼。這種方法相較于第一種要簡單很多,不用閱讀wsdl文件。

wsimport -d <生成.class文件的目錄> -s <生成.java文件的目錄> -p<包名> <wsdl地址>

Java調用wsdl接口的方法有哪些

 在D:\wsdl下新建文件夾class用于存放.class文件,文件夾java用于存放.java文件

D:\wsdl>wsimport -d class -s java -p mobileCode http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

執行命令,生成java代碼 

Java調用wsdl接口的方法有哪些

 將Java文件拷貝至原先項目中

Java調用wsdl接口的方法有哪些

 Java代碼示例

import mobileCode.MobileCodeWS;
import mobileCode.MobileCodeWSSoap;
 
import java.util.List;
 
public class Main {
    public static void main(String[] args) {
        MobileCodeWS mobileCodeWS = new MobileCodeWS();
        MobileCodeWSSoap soap = mobileCodeWS.getMobileCodeWSSoap();
        String mobileCodeInfo = soap.getMobileCodeInfo("手機號碼", null);
        System.out.println(mobileCodeInfo);
        List<String> dbInfo = soap.getDatabaseInfo().getString();
        System.out.println(dbInfo);
    }
}

wsimport生成的Java代碼中自定義了一個ArrayOfString數據結構,用于接收webservice返回的字符串數組,用getString()方法可以將之轉化為列表

package mobileCode;
 
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
 
 
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ArrayOfString", propOrder = {
    "string"
})
public class ArrayOfString {
 
    @XmlElement(nillable = true)
    protected List<String> string;
 
    public List<String> getString() {
        if (string == null) {
            string = new ArrayList<String>();
        }
        return this.string;
    }
 
}

“Java調用wsdl接口的方法有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

祁东县| 高雄县| 泗水县| 水城县| 泾阳县| 云阳县| 高密市| 宜君县| 巴东县| 昌黎县| 绵阳市| 如东县| 哈巴河县| 麻栗坡县| 璧山县| 友谊县| 图木舒克市| 萍乡市| 镇远县| 盐山县| 宁陵县| 永昌县| 沛县| 黄冈市| 礼泉县| 佛学| 图们市| 万盛区| 永德县| 瑞丽市| 乐山市| 清镇市| 枣庄市| 淮南市| 垣曲县| 莫力| 临泽县| 云梦县| 舞钢市| 拜泉县| 香格里拉县|