Rumah  >  Artikel  >  Java  >  Cara SpringBoot menggunakan paksi untuk memanggil antara muka perkhidmatan web

Cara SpringBoot menggunakan paksi untuk memanggil antara muka perkhidmatan web

王林
王林ke hadapan
2023-05-11 13:28:062194semak imbas

WebService

Definisi

Cara SpringBoot menggunakan paksi untuk memanggil antara muka perkhidmatan web

Pemahaman peribadi

Melalui kaedah seperti Du Niang, saya secara peribadi memahaminya sebagai sabun yang menyamar protokol tambah proses xml Pemprosesan tunggal,

Amalkan

akal waras perkhidmatan web

Alamat penerbitan antara muka perkhidmatan web selalunya serupa:

  • antara muka pengesahan dalam talian qq:

www.webxml.com.cn/webservices…

  • Antara muka lain yang boleh diuji:

e-mel Antara muka alamat e-mel: www.webxml.com.cn/WebServices…

Antara muka keadaan cuaca negara:

www.webxml.com.cn/WebServices…

qq Ambil antara muka pengesahan antara muka dalam talian sebagai contoh

Tambah selepas antara muka: /wsdl www.webxml.com.cn/webservices…

Akses ke. lihat dan cari definisi dalam rajah di bawah Kandungan: Beri perhatian kepada menggunakan kekunci yang berkaitan untuk mencari parameter yang diperlukan yang sepadan.

Cara SpringBoot menggunakan paksi untuk memanggil antara muka perkhidmatan web

maven Gunakan paksi

Gunakan kebergantungan (tidak hilang dan diperlukan)

        <!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
        <dependency>
            <groupId>org.apache.axis</groupId>
            <artifactId>axis</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/wsdl4j/wsdl4j -->
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>1.6.2</version>
        </dependency>
<!--        解决cell 转换问题-->
        <!-- https://mvnrepository.com/artifact/javax.xml/jaxrpc-api -->
        <dependency>
            <groupId>javax.xml</groupId>
            <artifactId>jaxrpc-api</artifactId>
            <version>1.1</version>
        </dependency>
<!--       解析调用结果以及数据转换包-->
        <!-- https://mvnrepository.com/artifact/commons-discovery/commons-discovery -->
        <dependency>
            <groupId>commons-discovery</groupId>
            <artifactId>commons-discovery</artifactId>
            <version>0.2</version>
        </dependency>

Kod (tampal tersedia)

@Test
public void testWebService() {
    try {
        //wsdl地址
        String endpoint = "http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx";
        //命名空间
        String namespace = "http://WebXml.com.cn/";
        //服务名
        String serviceName = "qqOnlineWebService";
        //方法名
        String methodName = "qqCheckOnline";
        //soapAction
        String soapAction = "http://WebXml.com.cn/qqCheckOnline";

        Service service = new Service();
        Call call = (Call) service.createCall();
        //设置响应超时
        call.setTimeout(3000);
        //设置地址
        call.setTargetEndpointAddress(new java.net.URL(endpoint));
        //设置方法名
        call.setOperationName(new QName(namespace, methodName));

        //设置参数
        call.addParameter(new QName(namespace, "qqCode")
                , org.apache.axis.encoding.XMLType.XSD_STRING, javax.xml.rpc.ParameterMode.IN);
        //设置返回类型
        call.setReturnType(XMLType.XSD_SCHEMA);
        //启用soap
        call.setUseSOAPAction(true);
        //设置soapAction
        call.setSOAPActionURI(soapAction);
        //设置服务名
        SOAPService soapService = new SOAPService();
        soapService.setName(serviceName);
        call.setSOAPService(soapService);
        Schema result = (Schema) call.invoke(new Object[]{"xxxxx"});
        for (int i = 0; i < result.get_any().length; i++) {
            System.out.println(result.get_any()[i]);
        }
    } catch (Exception e) {
        log.error("ddd", e);
    }
}

Mengenai kod di atas, izinkan saya mengadu di sini sebenarnya terdapat banyak contoh ini di Internet, tetapi masalah akan berlaku apabila benar-benar memanggilnya.

Dapatkan hasilCara SpringBoot menggunakan paksi untuk memanggil antara muka perkhidmatan web

  • xxxx perlu isikan nombor QQ sebenar

Atas ialah kandungan terperinci Cara SpringBoot menggunakan paksi untuk memanggil antara muka perkhidmatan web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam