最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot調(diào)用WebService接口的實現(xiàn)示例

 更新時間:2025年03月12日 08:27:18   作者:m0_74823827  
本文主要介紹了SpringBoot調(diào)用WebService接口的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

調(diào)用WebService接口的方式有很多,今天記錄一下,使用 Spring Web Services 調(diào)用 SOAP WebService接口

一.導(dǎo)入依賴

        <!-- Spring Boot Web依賴 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Spring Web Services -->
        <dependency>
            <groupId>org.springframework.ws</groupId>
            <artifactId>spring-ws-core</artifactId>
        </dependency>

        <!-- Apache HttpClient 作為 WebService 客戶端 -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>

        <!-- JAXB API -->
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>

        <!-- JAXB 運行時 -->
        <dependency>
            <groupId>org.glassfish.jaxb</groupId>
            <artifactId>jaxb-runtime</artifactId>
            <version>2.3.5</version>
        </dependency>

二.創(chuàng)建請求類和響應(yīng)類

根據(jù)SOAP的示例,創(chuàng)建請求類和響應(yīng)類

SOAP示例

請求
POST *****************
Host: **************
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://*******/DownloadFileByMaterialCode"

<?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>
    <DownloadFileByMaterialCode xmlns="http://*******/">
      <MaterialCode>string</MaterialCode>
      <FileType>string</FileType>
      <Category>string</Category>
    </DownloadFileByMaterialCode>
  </soap:Body>
</soap:Envelope>


響應(yīng)
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?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>
    <DownloadFileByMaterialCodeResponse xmlns="http://********/">
      <DownloadFileByMaterialCodeResult>string</DownloadFileByMaterialCodeResult>
    </DownloadFileByMaterialCodeResponse>
  </soap:Body>
</soap:Envelope>

根據(jù)我的這個示例,我創(chuàng)建的請求類和響應(yīng)類,是這樣的

請求類

@Data
@XmlRootElement(name = "DownloadFileByMaterialCode", namespace = "http://*******/")
@XmlAccessorType(XmlAccessType.FIELD)
public class DownloadFileByMaterialCodeRequest {
    @XmlElement(name = "MaterialCode", namespace = "http://*******/")
    private String MaterialCode;
    @XmlElement(name = "FileType", namespace = "http://*******/")
    private String FileType;
    @XmlElement(name = "Category", namespace = "http://*******/")
    private String Category;
}

響應(yīng)類

@Data
@XmlRootElement(name = "DownloadFileByMaterialCodeResponse", namespace = "http://********/")
@XmlAccessorType(XmlAccessType.FIELD)
public class DownloadFileByMaterialCodeResponse {
    @XmlElement(name = "DownloadFileByMaterialCodeResult", namespace = "http://********/")
    private String DownloadFileByMaterialCodeResult;
}

三.創(chuàng)建ObjectFactory類

@XmlRegistry
public class ObjectFactory {
    // 創(chuàng)建 DownloadFileByMaterialCodeRequest 的實例
    public DownloadFileByMaterialCodeRequest createDownloadFileByMaterialCodeRequest() {
        return new DownloadFileByMaterialCodeRequest();
    }

    // 創(chuàng)建 DownloadFileByMaterialCodeResponse 的實例
    public DownloadFileByMaterialCodeResponse createDownloadFileByMaterialCodeResponse() {
        return new DownloadFileByMaterialCodeResponse();
    }
}

四.配置WebServiceTemplate

@Configuration
public class WebServiceConfig {

    @Bean
    public WebServiceTemplate webServiceTemplate() {
        Jaxb2Marshaller marshaller = new Jaxb2Marshaller();
        marshaller.setContextPath("org.jeecg.modules.webservice");  // 包路徑,包含請求和響應(yīng)對象類

        WebServiceTemplate template = new WebServiceTemplate(marshaller);

        return template;
    }
}

五.調(diào)用WebService接口

@Service
public class DownloadFileService {
    @Autowired
    private WebServiceTemplate webServiceTemplate;

    public List<ResponseJsonObject> downloadFile(String materialCode, String fileType, String category) throws JsonProcessingException {
        String uri = "http://192.168.***.***/DYDServiceTest/PlmService.asmx";  // WebService 的 URL

        // 創(chuàng)建請求對象并設(shè)置參數(shù)
        DownloadFileByMaterialCodeRequest request = new DownloadFileByMaterialCodeRequest();
        request.setMaterialCode(materialCode);
        request.setFileType(fileType);
        request.setCategory(category);

        // 設(shè)置 SOAPAction
        String soapAction = "http://********/DownloadFileByMaterialCode";  // Web 服務(wù)指定的 SOAPAction

        // 使用 SoapActionCallback 來設(shè)置 SOAPAction 頭
        SoapActionCallback soapActionCallback = new SoapActionCallback(soapAction);

        // 發(fā)送 SOAP 請求并獲取響應(yīng)
        DownloadFileByMaterialCodeResponse response = (DownloadFileByMaterialCodeResponse)
                webServiceTemplate.marshalSendAndReceive(uri, request, soapActionCallback);

        // 獲取并返回 DownloadFileByMaterialCodeResult
        String downloadFileByMaterialCodeResult = response.getDownloadFileByMaterialCodeResult();
        System.out.println(downloadFileByMaterialCodeResult);

        //字符串轉(zhuǎn)換為ResponseJsonObject對象
        ObjectMapper objectMapper = new ObjectMapper();
        // 忽略未知字段
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        List<ResponseJsonObject> ResponseJsonObjects = objectMapper.readValue(downloadFileByMaterialCodeResult, objectMapper.getTypeFactory().constructCollectionType(List.class, ResponseJsonObject.class));

        return ResponseJsonObjects;
    }
}

六.測試代碼

    @Test
    public void test1() throws JsonProcessingException {
        List<ResponseJsonObject> responseJsonObjects = downloadFileService.downloadFile("CCPT0016-QBY-7", "", "");
        for (ResponseJsonObject responseJsonObject : responseJsonObjects) {
            System.out.println(responseJsonObject.getDocName());
        }
    }

測試效果

這里在附上所有文件的路勁圖,可以參考一下

總結(jié)

根據(jù)接口給出的SAOP的示例,封裝好對應(yīng)的實體類,因為我這里的類型都是String,大家也可以根據(jù)實際情況,封裝好對應(yīng)的類

注意注解的參數(shù),namespace = “http://*******/” 給接口提供的域名地址

到此這篇關(guān)于SpringBoot調(diào)用WebService接口的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)SpringBoot調(diào)用WebService接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot測試WebMVC的4種實現(xiàn)方案

    SpringBoot測試WebMVC的4種實現(xiàn)方案

    在項目開發(fā)中,測試是確保應(yīng)用質(zhì)量的關(guān)鍵環(huán)節(jié),對于基于SpringBoot構(gòu)建的Web應(yīng)用,高效測試MVC層可以極大提高開發(fā)及聯(lián)調(diào)效率,下面我們來看看SpringBoot中測試WebMVC的4種實現(xiàn)方案吧
    2025-04-04
  • idea復(fù)制module(項目)并在一個窗口展示的教程詳解

    idea復(fù)制module(項目)并在一個窗口展示的教程詳解

    這篇文章主要介紹了idea復(fù)制module(項目)并在一個窗口展示的方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • MyBatis之關(guān)于動態(tài)SQL解讀

    MyBatis之關(guān)于動態(tài)SQL解讀

    這篇文章主要介紹了MyBatis之關(guān)于動態(tài)SQL解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • maven依賴的配置和排除依賴過程

    maven依賴的配置和排除依賴過程

    這篇文章主要介紹了maven依賴的配置和排除依賴過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • SpringBoot中項目如何讀取外置logback配置文件

    SpringBoot中項目如何讀取外置logback配置文件

    這篇文章主要介紹了SpringBoot中項目如何讀取外置logback配置文件問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Java多線程atomic包介紹及使用方法

    Java多線程atomic包介紹及使用方法

    這篇文章主要介紹了Java多線程atomic包介紹及使用方法,涉及原子更新基本類型介紹及代碼示例,具有一定參考價值,需要的朋友可以了解下。
    2017-11-11
  • IntelliJ IDEA 如何配置git的操作方法

    IntelliJ IDEA 如何配置git的操作方法

    這篇文章主要介紹了IntelliJ IDEA 如何配置git,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • java發(fā)送飛書消息卡片具體實現(xiàn)方法

    java發(fā)送飛書消息卡片具體實現(xiàn)方法

    這篇文章主要介紹了java發(fā)送飛書消息卡片具體實現(xiàn)方法的相關(guān)資料,Java通過飛書消息卡片API,可以高效解決傳統(tǒng)消息推送方式的痛點,實現(xiàn)業(yè)務(wù)系統(tǒng)事件與飛書消息卡片之間的全流程閉環(huán),需要的朋友可以參考下
    2026-03-03
  • mybatis中mapper代理的生成過程全面分析

    mybatis中mapper代理的生成過程全面分析

    這篇文章主要為大家介紹了mybatis中mapper代理的生成過程全面分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • Java線程池核心工作原理解析

    Java線程池核心工作原理解析

    線程池是一個“生產(chǎn)者-消費者”模型的優(yōu)雅實現(xiàn),生產(chǎn)者提交任務(wù)(Runnable對象),消費者(池中的線程)從任務(wù)隊列中獲取并執(zhí)行任務(wù),本文給大家介紹Java線程池核心工作原理解析,感興趣的朋友跟隨小編一起看看吧
    2025-10-10

最新評論

东方市| 诏安县| 温泉县| 剑阁县| 南汇区| 西乡县| 家居| 新乡县| 延川县| 盐津县| 邻水| 上栗县| 永吉县| 页游| 南木林县| 江西省| 博罗县| 湛江市| 康定县| 望城县| 徐汇区| 陆川县| 秦皇岛市| 博白县| 玉田县| 多伦县| 南漳县| 福清市| 大田县| 息烽县| 郯城县| 平南县| 河东区| 洪江市| 芒康县| 二手房| 靖江市| 涟源市| 湘乡市| 凤凰县| 麻城市|