亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java調(diào)用wsdl接口的兩種方法(axis和wsimport)

 更新時(shí)間:2023年03月29日 09:56:17   作者:文明沖浪  
本文主要介紹了Java調(diào)用wsdl接口的兩種方法(axis和wsimport),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、AXIS調(diào)用遠(yuǎn)程WebService,以國(guó)內(nèi)手機(jī)號(hào)歸屬地查詢?yōu)槔?nbsp;

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

2、導(dǎo)入依賴:

使用axis遠(yuǎn)程調(diào)用webService需要使用到axis、jaxrpc-api、commons-logging、commons-discovery等jar包。方便起見可以新建maven項(xiàng)目,在pom中導(dǎo)入依賴

    <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、調(diào)用有入?yún)⒌膚ebservice接口

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

<wsdl:operation name="getMobileCodeInfo">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><br /><h3>獲得國(guó)內(nèi)手機(jī)號(hào)碼歸屬地省份、地區(qū)和手機(jī)卡類型信息</h3><p>輸入?yún)?shù):mobileCode = 字符串(手機(jī)號(hào)碼,最少前7位數(shù)字),userID = 字符串(商業(yè)用戶ID) 免費(fèi)用戶為空字符串;返回?cái)?shù)據(jù):字符串(手機(jī)號(hào)碼:省份 城市 手機(jī)卡類型)。</p><br /></wsdl:documentation>
<wsdl:input message="tns:getMobileCodeInfoSoapIn"/>
<wsdl:output message="tns:getMobileCodeInfoSoapOut"/>
</wsdl:operation>

方法名為:getMobileCodeInfo

參數(shù)有兩個(gè):mobileCode手機(jī)號(hào)碼,字符串類型;userID用戶id,字符串類型(可以為空)

返回類型為字符串

Java調(diào)用代碼

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");
    /**
     * 設(shè)置方法名
     * new QName(String namespaceURI, String localPart) namespaceURI即為wsdl中的targetNamespace, localPart即為接口名
     */
    call.setOperationName(new QName("http://WebXml.com.cn/", "getMobileCodeInfo"));
    /**
     * 添加參數(shù)
     * addParameter方法的參數(shù)包括:參數(shù)名(namespace+參數(shù)名)、參數(shù)類型、ParameterMode(入?yún)⒓礊镮N)
     */
    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[]{"手機(jī)號(hào)碼"});
    System.out.println(result);
}

4、調(diào)用無參的webservice接口

調(diào)用無參的webservice接口無需添加參數(shù),并且在invoke方法中傳入的是一個(gè)空的對(duì)象數(shù)組

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

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

<wsdl:operation name="getDatabaseInfo">
<wsdl:documentation xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><br /><h3>獲得國(guó)內(nèi)手機(jī)號(hào)碼歸屬地?cái)?shù)據(jù)庫(kù)信息</h3><p>輸入?yún)?shù):無;返回?cái)?shù)據(jù):一維字符串?dāng)?shù)組(省份 城市 記錄數(shù)量)。</p><br /></wsdl:documentation>
<wsdl:input message="tns:getDatabaseInfoSoapIn"/>
<wsdl:output message="tns:getDatabaseInfoSoapOut"/>
</wsdl:operation>

方法名:getDatabaseInfo,參數(shù):無,返回類型:一維字符串?dāng)?shù)組

Java調(diào)用代碼

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轉(zhuǎn)換為Java接口

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

wsimport -d <生成.class文件的目錄> -s <生成.java文件的目錄> -p<包名> <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

執(zhí)行命令,生成java代碼 

 將Java文件拷貝至原先項(xiàng)目中

 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("手機(jī)號(hào)碼", null);
        System.out.println(mobileCodeInfo);
        List<String> dbInfo = soap.getDatabaseInfo().getString();
        System.out.println(dbInfo);
    }
}

wsimport生成的Java代碼中自定義了一個(gè)ArrayOfString數(shù)據(jù)結(jié)構(gòu),用于接收webservice返回的字符串?dāng)?shù)組,用getString()方法可以將之轉(zhuǎn)化為列表

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;
    }
 
}

到此這篇關(guān)于Java調(diào)用wsdl接口的兩種方法(axis和wsimport)的文章就介紹到這了,更多相關(guān)Java調(diào)用wsdl接口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

  • springboot分布式整合dubbo的方式

    springboot分布式整合dubbo的方式

    Dubbo是一款高性能、輕量級(jí)的開源Java RPC框架,本文通過實(shí)例代碼給大家介紹springboot分布式整合dubbo的方式,感興趣的朋友跟隨小編一起看看吧
    2021-11-11
  • Java中的CompletableFuture使用解析

    Java中的CompletableFuture使用解析

    這篇文章主要介紹了Java中的CompletableFuture使用解析,為什么CompletableFuture要定制化線程池,因?yàn)槟J(rèn)的線程池是ForkJoinPool,這個(gè)線程池的最大線程數(shù)默認(rèn)是你的電腦的線程數(shù)數(shù)減1,假如我線程電腦是4核8線程的,ForkJoinPool的最大線程數(shù)就是7,需要的朋友可以參考下
    2024-01-01
  • mybatisplus中EntityWrapper的常用方法

    mybatisplus中EntityWrapper的常用方法

    這篇文章主要介紹了mybatisplus中EntityWrapper的常用方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java實(shí)現(xiàn)統(tǒng)一異常處理的示例

    java實(shí)現(xiàn)統(tǒng)一異常處理的示例

    一個(gè)全局異常處理類需要處理三類異常1.業(yè)務(wù)類異常,2.運(yùn)行時(shí)異常 ,3.Error,本文給大家介紹java實(shí)現(xiàn)統(tǒng)一異常處理的示例,感興趣的朋友一起看看吧
    2021-06-06
  • 關(guān)于Java中的IO流總結(jié)(推薦)

    關(guān)于Java中的IO流總結(jié)(推薦)

    下面小編就為大家?guī)硪黄P(guān)于Java中的IO流總結(jié)(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java數(shù)據(jù)結(jié)構(gòu)順序表用法詳解

    Java數(shù)據(jù)結(jié)構(gòu)順序表用法詳解

    順序表是計(jì)算機(jī)內(nèi)存中以數(shù)組的形式保存的線性表,線性表的順序存儲(chǔ)是指用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)線性表中的各個(gè)元素、使得線性表中在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲(chǔ)在相鄰的物理存儲(chǔ)單元中,即通過數(shù)據(jù)元素物理存儲(chǔ)的相鄰關(guān)系來反映數(shù)據(jù)元素之間邏輯上的相鄰關(guān)系
    2021-10-10
  • 教你怎么用Java實(shí)現(xiàn)給圖片打上水印

    教你怎么用Java實(shí)現(xiàn)給圖片打上水印

    這篇文章主要介紹了教你怎么用Java實(shí)現(xiàn)給圖片打上水印,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • java對(duì)象和json的來回轉(zhuǎn)換知識(shí)點(diǎn)總結(jié)

    java對(duì)象和json的來回轉(zhuǎn)換知識(shí)點(diǎn)總結(jié)

    在本篇文章里小編給大家分享了一篇關(guān)于java對(duì)象和json的來回轉(zhuǎn)換知識(shí)點(diǎn)總結(jié)內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2021-01-01
  • Java內(nèi)存溢出實(shí)現(xiàn)原因及解決方案

    Java內(nèi)存溢出實(shí)現(xiàn)原因及解決方案

    這篇文章主要介紹了Java內(nèi)存溢出實(shí)現(xiàn)原因及解決方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 最新評(píng)論