欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

利用idea生成webservice客戶端超詳解步驟(wsdl文件的使用)

 更新時(shí)間:2023年12月15日 11:14:07   作者:就是有緣人  
這篇文章主要給大家介紹了關(guān)于利用idea生成webservice客戶端超詳解步驟,第一次接觸webservice,從采坑到采坑,算是了解了一些,明白了一些,文中通過代碼以及圖文介紹的非常詳細(xì),需要的朋友可以參考下

一、idea安裝webservice

1.點(diǎn)擊左上file,選中settings

2.下載Web Service

3.給此項(xiàng)目添加webservice

4.添加webservice的依賴

   <!--webservice的:TestCase需要的jar包-->     
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>

二、利用idea根據(jù)wsdl文件自動(dòng)生成webService客戶端代碼(然后比照著生成的測(cè)試類進(jìn)行接口或方法的調(diào)用)

步驟:1.利用idea根據(jù)wsdl文件生成代碼,需要先將wsdl文件下載到本地

    2.下載時(shí)無必要要求,選擇Apache Axis,依賴需要自行百度搜索

    3.下載后需要比照著測(cè)試類代碼,寫調(diào)用接口或方法的代碼

好處:1.入?yún)⒌膮?shù)不需要自己進(jìn)行封裝 , 特別容易寫

     2.返回值都被封裝好了 , 可以很容易就取到 , 不用自己寫解析代碼

1.打開tools -> WebServices -> Generate Java Code From Wsdl,按照?qǐng)D中順序進(jìn)行

2.按照?qǐng)D中順序進(jìn)行操作,最后點(diǎn)擊OK

3.必須勾選Generate TestCase

(會(huì)給出調(diào)用接口的例子,照著抄就可以實(shí)現(xiàn)調(diào)用指定接口)

4.2點(diǎn)擊ok報(bào)錯(cuò) , 就去百度下載Axis所需的依賴 , 第一次需額外下載一個(gè)插件(直接下載完就行)

只要不是報(bào)wsdl文件出錯(cuò) , 其他報(bào)錯(cuò)后,只要能生成代碼 , 就可以使用

4.wsdl文件轉(zhuǎn)換生成Java代碼:成功

例子1:

 例子2:

5.如何使用生成的代碼

點(diǎn)擊打開名字中帶Test的這個(gè)類,找到你需要的方法,直接復(fù)制出來就能用

三、直接利用Axis2調(diào)用wsdl類型接口:

好處:不用利用idea根據(jù)wsdl自動(dòng)生成webService客戶端代碼,然后再比照著測(cè)試類調(diào)用所需方法

壞處: 1.入?yún)⑿枰约哼M(jìn)行參數(shù)的封裝 ,自己封裝參數(shù)有例子也不容易

2.如果需要獲取調(diào)用接口的返回值,則還不會(huì)解析返回的數(shù)據(jù),無法得到所需的參數(shù)(沒解析報(bào)文的例子,自己不會(huì)寫)

Axis2 調(diào)用接口示例:

import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
 
 
public class Test {
    public static void test() {
        String userId = "123";
        String bindAccount = "123";
        RPCServiceClient serviceClient = null;
 
        OMFactory factory = OMAbstractFactory.getOMFactory();
        OMNamespace omDiag = factory.createOMNamespace("http://diagnosis.interfaces.axis2.osf.nort hbound.neal.cpehg.ums.zte.com", "diag");
        OMNamespace omXSD = factory.createOMNamespace("http://model.common.northbound.neal.cpehg. ums.zte.com/xsd", "xsd");
 
        try {
            serviceClient = new RPCServiceClient();
            Options options = serviceClient.getOptions();
// 指定調(diào)用WebService的URL
            EndpointReference targetEPR = new EndpointReference("http://10.46.60.200:9094/axis2/services/Cpe112Diag nosisWebServices?wsdl");
            options.setTo(targetEPR);
            options.setTimeOutInMilliSeconds(30000);
            options.setManageSession(true);
 
// 指定方法的參數(shù)值
            OMElement paramRequest = factory.createOMElement("request", omDiag);
            OMElement paramUserId = factory.createOMElement("userID", omXSD);
 
            paramUserId.setText(userId);
            OMElement paramBindAccount = factory.createOMElement("bindAccount", omXSD);
            paramBindAccount.setText(bindAccount);
            paramRequest.addChild(paramBindAccount);
            paramRequest.addChild(paramUserId);
 
            OMElement paramItemName = factory.createOMElement("itemName", omDiag);
            paramItemName.setText("cpehg.diagnosis.CpeBasicInfo");
 
            String method = "getParameterValuesFromDbAndCpeByItemName";
 
            OMElement data = factory.createOMElement(method, omXSD);
            data.setNamespace(omDiag);
            data.addChild(paramRequest);
            data.addChild(paramItemName);
 
            OMElement re = serviceClient.sendReceive(data);
// 處理返回?cái)?shù)據(jù)
 
        } catch (AxisFault e) {
// 異常處理
            e.printStackTrace();
        } finally {
 
            try {
                if (serviceClient != null) serviceClient.cleanupTransport();
            } catch (AxisFault e) {
 
            }
        }
    }
}

總結(jié)

到此這篇關(guān)于利用idea生成webservice客戶端的文章就介紹到這了,更多相關(guān)idea生成webservice客戶端內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Cloud Gateway組件的三種使用方式實(shí)例詳解

    Spring Cloud Gateway組件的三種使用方式實(shí)例詳解

    Spring Cloud Gateway是 Spring 官方基于 Spring5.0 、 SpringBoot2.0 和 Project Reactor 等技術(shù)開發(fā)的網(wǎng)關(guān)旨在為微服務(wù)框架提供一種簡(jiǎn)單而有效的統(tǒng)一的API 路由管理方式,統(tǒng)一訪問接口,這篇文章主要介紹了Spring Cloud Gateway組件的三種使用方式,需要的朋友可以參考下
    2024-01-01
  • mybatis-plus中的常用注解

    mybatis-plus中的常用注解

    這篇文章主要介紹了mybatis-plus中的常用注解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • Java單例模式的幾種常見寫法

    Java單例模式的幾種常見寫法

    這篇文章主要介紹了Java單例模式的幾種寫法,單例模式是面試中的??土?,常見寫法有?4?種:餓漢模式、懶漢模式、靜態(tài)內(nèi)部類和枚舉,接下來我們一起進(jìn)入文章看看吧
    2022-05-05
  • java使用動(dòng)態(tài)代理來實(shí)現(xiàn)AOP(日志記錄)的實(shí)例代碼

    java使用動(dòng)態(tài)代理來實(shí)現(xiàn)AOP(日志記錄)的實(shí)例代碼

    AOP(面向方面)的思想,就是把項(xiàng)目共同的那部分功能分離開來,比如日志記錄,避免在業(yè)務(wù)邏輯里面夾雜著跟業(yè)務(wù)邏輯無關(guān)的代碼
    2013-09-09
  • Java線程安全狀態(tài)專題解析

    Java線程安全狀態(tài)專題解析

    線程安全是多線程編程時(shí)的計(jì)算機(jī)程序代碼中的一個(gè)概念。在擁有共享數(shù)據(jù)的多條線程并行執(zhí)行的程序中,線程安全的代碼會(huì)通過同步機(jī)制保證各個(gè)線程都可以正常且正確的執(zhí)行,不會(huì)出現(xiàn)數(shù)據(jù)污染等意外情況
    2022-03-03
  • 如何在springboot中配置和使用mybatis-plus

    如何在springboot中配置和使用mybatis-plus

    這篇文章主要給大家介紹了關(guān)于如何在springboot中配置和使用mybatis-plus的相關(guān)資料,MyBatis?Plus是MyBatis的增強(qiáng)版,旨在提供更多便捷的特性,減少開發(fā)工作,同時(shí)保留了MyBatis的靈活性和強(qiáng)大性能,需要的朋友可以參考下
    2023-11-11
  • Hibernate懶加載之<class>標(biāo)簽上的lazy

    Hibernate懶加載之<class>標(biāo)簽上的lazy

    這篇文章主要介紹了Hibernate懶加載之<class>標(biāo)簽上的lazy,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • IDEA 必要配置設(shè)置方式

    IDEA 必要配置設(shè)置方式

    這篇文章主要介紹了IDEA 必要配置設(shè)置方式,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot使用Swagger生成多模塊的API文檔

    SpringBoot使用Swagger生成多模塊的API文檔

    這篇文章將以?Spring?Boot?多模塊項(xiàng)目為例,為大家詳細(xì)介紹一下如何使用?Swagger?生成多模塊的?API?文檔,感興趣的小伙伴可以了解一下
    2025-02-02
  • 自己編寫IOC控制反轉(zhuǎn)及AOP面向切面

    自己編寫IOC控制反轉(zhuǎn)及AOP面向切面

    本文展示通過一個(gè)案例來自己手寫IOC和AOP代碼,通過銀行轉(zhuǎn)賬案例詳細(xì)的代碼編寫和文檔解釋來說明IOC和AOP的思想,會(huì)分享存在的問題和解決問題的思路
    2021-06-06

最新評(píng)論