国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

對(duì)接 Web Service第三方接口

這篇具有很好參考價(jià)值的文章主要介紹了對(duì)接 Web Service第三方接口。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

這次也是頭一次接觸對(duì)接第三方WebService接口,這技術(shù)都很老了,使用postman測(cè)試的時(shí)候還找了半天資料??。

關(guān)于postman測(cè)試

一般來說第三方都會(huì)限制ip這些,需要注意的是,給到的接口地址是能用公網(wǎng)進(jìn)行訪問的哦。

1、拿到接口路徑

http://111.111.11.1:111/services/infoWebService?wsdl

這個(gè)當(dāng)然是不可以訪問的,是假的??。

2、瀏覽器鍵入地址

出現(xiàn)這樣的xml就代表接口沒毛病哦

對(duì)接 Web Service第三方接口

3、來到postman 還是同樣的操作,將第三方接口地址設(shè)為POST請(qǐng)求,如果請(qǐng)求不到可以去掉路徑上的 ?wsdl,設(shè)置請(qǐng)求頭 Content-Type:text/xml;charset=urf-8。

對(duì)接 Web Service第三方接口

對(duì)接 Web Service第三方接口

注意選中 raw 格式選擇 XML 。
標(biāo)號(hào) 1 的地方就是我們的方法名稱。
標(biāo)號(hào) 2 的地方就是我們的 targetNamespace 里的內(nèi)容。
標(biāo)號(hào) 3 的地方就是我們的方法返回類型。

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<ns1:applyInfo  xmlns:ns1="http://service.webservice.catalog.infotrust.com">
<ns1:in0>
<![CDATA[
{
"token":"31cf2fba490b4714aa0b601fe0e25481",
"rescode":"892d615e9cec4b0a8fff9da2099bf2e7"
}
]]>
</ns1:in0>
</ns1:applyInfo>
</soap:Body>
</soap:Envelope>

參數(shù)就需要你自己去參照第三方給到你的文檔了哦。

4、返回?cái)?shù)據(jù)

對(duì)接 Web Service第三方接口

對(duì)接 Web Service第三方接口

有沒有發(fā)現(xiàn)什么不一樣地方呢,沒錯(cuò)返回的也是xml格式的哦。
還可以發(fā)現(xiàn)數(shù)據(jù)都在我們的data里面,是JSON格式。
這里需要注意的是,想要拿到JSON對(duì)象,需要對(duì)返回的數(shù)據(jù)進(jìn)行截取,詳情看后臺(tái)。

后臺(tái)調(diào)用WebService第三方接口

  1. 根據(jù)第三方提供的接口文檔,創(chuàng)建對(duì)應(yīng)的實(shí)體類,字段最好一致,或者再多寫個(gè)映射可以實(shí)現(xiàn)本地?cái)?shù)據(jù)庫(kù)字段與第三方數(shù)據(jù)庫(kù)字段不一致 ! !

  2. 想要調(diào)用接口,還需要登錄拿到Token,使用Token 和資源碼調(diào)用接口,人家給的文檔已經(jīng)明確說明了。
    對(duì)接 Web Service第三方接口在postman中:
    對(duì)接 Web Service第三方接口
    可以看到是需要(用戶名+賬號(hào)+時(shí)間戳)的MD5值,那還需要一個(gè)操作獲取時(shí)間戳和MD5Key

   
/**
 * 獲取MD5Key和時(shí)間戳
 */
@Slf4j
public class DSFToken {

    /**
     * 獲取MD5Key和時(shí)間戳
     */
    public Map<String,String> getMd5KeyAndTimeStamp()throws Exception{
        Map<String,String> map = new HashMap<>();
        Long timestamp = getTimestamp();
        String md5key = getMD5s("test123tD8#mE5["+timestamp);
        map.put("timestamp",timestamp.toString());
        map.put("md5key",md5key);
        return map;
    }

    /**
     * 獲取當(dāng)前時(shí)間戳
     */
    public Long getTimestamp() throws Exception {
        Timestamp timestamp = new Timestamp(System.currentTimeMillis());
        Instant instant = timestamp.toInstant();
        Timestamp tsFromInstant = Timestamp.from(instant);
        return tsFromInstant.getTime();
    }

    /**
     * 獲取MD5值
     * @param plainText
     * @return
     */
    public  String getMD5s(String plainText)throws Exception {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(plainText.getBytes());
            byte b[] = md.digest();

            int i;

            StringBuffer buf = new StringBuffer("");
            for (int offset = 0; offset < b.length; offset++) {
                i = b[offset];
                if (i < 0)
                    i += 256;
                if (i < 16)
                    buf.append("0");
                buf.append(Integer.toHexString(i));
            }
            //32位加密
            return buf.toString();
            // 16位的加密
            //return buf.toString().substring(8, 24);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }
}
  1. 這個(gè)時(shí)候我們可以正常獲取token了
/**
     * 獲取登錄token
     * @return
     * @throws Exception
     */
    public String getToken() throws Exception {
        DSFToken dsf = new DSFToken();
        Map<String,String> map = dsf.getMd5KeyAndTimeStamp();
        //獲取時(shí)間戳
        String timestamp = map.get("timestamp");
        //獲取md5key值
        String md5key = map.get("md5key");
        //WebService外網(wǎng)訪問ip地址
        String SERVER_IP_TEST = "http://********/services/infoWebService";
        //通過StringBuilder拼接請(qǐng)求
        StringBuilder paramValue = new StringBuilder();

        paramValue.append("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
                "<soap:Body>\n" +
                "<ns1:getSafeToken  xmlns:ns1=\"http://service.webservice.catalog.infotrust.com\">\n" +
                "<ns1:in0>\n" +
                "<![CDATA[\n" +
                "{\"username\":\"test123\",\"md5key\":\""+ md5key +"\",\"timestamp\":\""+timestamp+"\"}\n" +
                "]]>\n" +
                "</ns1:in0>\n" +
                "</ns1:getSafeToken>\n" +
                "</soap:Body>\n" +
                "</soap:Envelope>");
        //調(diào)用post請(qǐng)求方法
        String result = sendPost(SERVER_IP_TEST,paramValue.toString());
        //由于返回的是XML我們需要對(duì)返回的數(shù)據(jù)進(jìn)行截取,才能獲得想要的
        String str1 = result.substring(result.indexOf("t>"),result.indexOf("</n")).substring("t>".length());
        if (str1 != null) {
            //轉(zhuǎn)JSONObject格式
            JSONObject jsonObject = JSON.parseObject(str1);
            if(jsonObject.get("token") != null){
//                redisDao.setStringAndTime("dsfToken",jsonObject.getString("token"),3600*24);//redis緩存一天
                return jsonObject.getString("token");
            }
        }
        throw new BaseException("聯(lián)系管理員");
    }

4. 拿到Token調(diào)用接口,使用Token 和資源碼 (固定的) 獲取數(shù)據(jù) 并將數(shù)據(jù)存儲(chǔ)到本地?cái)?shù)據(jù)庫(kù)

    public List<AeoInfo> updateAeoInfo() throws Exception {
        //資源碼
        String rescode = "c9769a4d208d41a99c1d847b68ccf1b4";
        //獲取token
        String token = getToken();
//        if(token==null){
//            redisDao.setStringAndTime("dsfToken",getToken(),3600*24);//redis緩存一天
//            token = redisDao.get("dsfToken");
//        }
        //WebService外網(wǎng)訪問ip地址
        String SERVER_IP_TEST = "http://********/services/infoWebService";
        //通過StringBuilder拼接請(qǐng)求
        StringBuilder paramValue = new StringBuilder();
        paramValue.append("<soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
                "<soap:Body>\n" +
                "<ns1:applyInfo  xmlns:ns1=\"http://service.webservice.catalog.infotrust.com\">\n" +
                "<ns1:in0>\n" +
                "<![CDATA[\n" +
                "{\n" +
                "\"token\":\"" + token +"\",\n" +
                "\"rescode\":\"" + rescode + "\"}\n" +
                "]]>\n" +
                "</ns1:in0>\n" +
                "</ns1:applyInfo>\n" +
                "</soap:Body>\n" +
                "</soap:Envelope>");
        //調(diào)用post請(qǐng)求方法
        String result = sendPost(SERVER_IP_TEST,paramValue.toString());
        //截取字符串
        String str1 = result.substring(result.indexOf("t>"),result.indexOf("</n")).substring("t>".length());
        if (str1 != null) {
            //轉(zhuǎn)JSONObject格式
            JSONObject jsonObject = JSON.parseObject(str1);
            if (jsonObject.get("data") != null) {
                //轉(zhuǎn)對(duì)象格式
                List<AeoInfo> entisyList = JSON.parseArray(jsonObject.getString("data"),AeoInfo.class);
                if(entisyList != null && entisyList.size()>0){
                    for (AeoInfo entity : entisyList) {
                    	//通過某個(gè)字段可以實(shí)現(xiàn)數(shù)據(jù)庫(kù)中沒有就新增,有就更新的效果,JPA的寫法
                    	//你們對(duì)接接口的時(shí)候,需要自己去選擇以哪個(gè)字段為準(zhǔn)哦
                        AeoInfo adminLicensing = aeoInfoRepository.findByRN(entity.getRN());
                        if(adminLicensing==null){
                        	//保存
                            aeoInfoRepository.save(entity);
                        }
                    }
                }
                return entisyList;
            }
        }
        return null;
    }

工具

用來發(fā)送Post請(qǐng)求的方法,用到的是restTemplate,你也可以換別的哦

@Autowired
    private RestTemplate restTemplate;

/**
     * post請(qǐng)求、請(qǐng)求參數(shù)為json
     * @return
     */
    public String sendPost(String uri, String params) {
        ResponseEntity<String> apiResponse = restTemplate.postForEntity
                (
                        uri,
                        generatePostJson(params),
                        String.class
                );
        return apiResponse.getBody();
    }

    /**
     * 生成post請(qǐng)求的JSON請(qǐng)求參數(shù)
     * @return
     */
    public HttpEntity<String> generatePostJson(String params) {

        //如果需要其它的請(qǐng)求頭信息、都可以在這里追加
        HttpHeaders httpHeaders = new HttpHeaders();

        MediaType type = MediaType.parseMediaType("application/json;charset=UTF-8");

        httpHeaders.setContentType(type);

        HttpEntity<String> httpEntity = new HttpEntity<>(params, httpHeaders);

        return httpEntity;
    }

XML配置

        
        <!--定時(shí)任務(wù)和@Slf4j注解日志的依賴-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
            <scope>provided</scope>
        </dependency>

        <!--json依賴-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.41</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.4.9</version>
        </dependency>

		<!-- apache md5 -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.13</version>
        </dependency>

		<!-- RestTemplate -->
		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

至此大公告成!文章來源地址http://www.zghlxwxcb.cn/news/detail-410810.html

到了這里,關(guān)于對(duì)接 Web Service第三方接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • uniapp 對(duì)接谷歌第三方登錄

    uniapp 對(duì)接谷歌第三方登錄

    1.登錄谷歌開發(fā)者后臺(tái) https://console.developers.google.com/ 2.添加憑證 3.拿到客戶端id后,項(xiàng)目中配置google登錄: ?示例代碼:

    2024年04月29日
    瀏覽(19)
  • 微信第三方平臺(tái)對(duì)接小程序發(fā)版

    微信第三方平臺(tái)對(duì)接小程序發(fā)版

    微信第三方平臺(tái)是商家把公眾號(hào)或小程序代交給服務(wù)商來管理, 當(dāng)商家把小程序授權(quán)給第三方平臺(tái)后,同時(shí)授權(quán)小程序開發(fā)與數(shù)據(jù)分析,小程序后臺(tái)就無法發(fā)版 ,必須開發(fā)人員調(diào)小程序的api才能實(shí)現(xiàn)發(fā)版;如不需要調(diào)第三方平臺(tái)接口的方式發(fā)布,取消 小程序開發(fā)與數(shù)據(jù)分析

    2024年02月16日
    瀏覽(25)
  • ??低昳SC 平臺(tái)第三方對(duì)接門禁權(quán)限分享

    海康威視iSC 平臺(tái)第三方對(duì)接門禁權(quán)限分享

    一、 場(chǎng)景描述 iSC 平臺(tái)的門禁產(chǎn)品及功能在項(xiàng)目應(yīng)用廣泛,第三方對(duì)接門禁權(quán)限功能的需求也越來也 多,由于門禁權(quán)限下發(fā)需要涉及到往設(shè)備上下發(fā),第三方接口調(diào)用一旦不正確,不合理的接 口調(diào)用很容易給我們平臺(tái)造成額外的性能消耗,甚至導(dǎo)致我們平臺(tái)掛掉,特此梳理

    2024年02月02日
    瀏覽(29)
  • 3PL第三方物流如何對(duì)接TSC EDI?

    TractorSupply(以下簡(jiǎn)稱為TSC)是一家總部位于美國(guó)的零售公司,主要專注于農(nóng)業(yè)、家庭和寵物用品。在美國(guó)擁有數(shù)百家門店,廣泛分布在城市、城鎮(zhèn)和農(nóng)村地區(qū),這使得他們能夠滿足各種地理位置和社區(qū)的需求。為了確保其供應(yīng)鏈以及物流運(yùn)營(yíng)的高效性,TSC選擇與3PL(第三方物

    2024年02月07日
    瀏覽(25)
  • 飛魚CRM接入第三方系統(tǒng) 飛魚API對(duì)接詳細(xì)教程

    飛魚CRM接入第三方系統(tǒng) 飛魚API對(duì)接詳細(xì)教程

    場(chǎng)景描述 在白碼低代碼開發(fā)平臺(tái)中,是支持外部crm系統(tǒng)的線索通過接口流入到白碼系統(tǒng)里面,換而言之,只要外部的系統(tǒng)有線索api接口,白碼系統(tǒng)可以接收線索并在白碼系統(tǒng)上進(jìn)行后續(xù)操作。本文以飛魚crm系統(tǒng)為例,講解如何接收飛魚crm系統(tǒng)傳過來的線索 前期準(zhǔn)備 準(zhǔn)備兩個(gè)

    2024年01月21日
    瀏覽(27)
  • 自營(yíng)外賣配送平臺(tái)的商家如何對(duì)接第三方美餓的訂單

    自營(yíng)外賣配送平臺(tái)的商家如何對(duì)接第三方美餓的訂單

    自營(yíng)外賣跑腿平臺(tái)對(duì)接第三方美餓的好處 單說美團(tuán)餓了么自身的流量?jī)?yōu)勢(shì),很多商家不能忽視,但是美團(tuán)餓了么的高額配送成本與抽成,同樣也不能忽視。很多商家希望選擇自配送或者其他更劃算的配送方式來節(jié)省成本。這時(shí),區(qū)域性的自建外賣平臺(tái)與美團(tuán)、餓了么實(shí)現(xiàn)訂單

    2024年02月13日
    瀏覽(24)
  • java調(diào)第三方接口

    目錄 背景 Spring的RestTemplate 1.引入依賴 2.RestTemplate配置類 3.RestTemplate實(shí)現(xiàn)類 java調(diào)第三方接口我百度的有三種方法. 第一種:通過JDK網(wǎng)絡(luò)類Java.net.HttpURLConnection 第二種:通過Apache common封裝好的HttpClient 第三種:通過Spring的RestTemplate 這個(gè)三種方法在我的scdn收藏里有,都是可以直接用的

    2024年02月05日
    瀏覽(33)
  • php第三方阿里云接口

    阿里云 OpenAPI 開發(fā)者門戶

    2024年02月15日
    瀏覽(21)
  • 【黑馬頭條之內(nèi)容安全第三方接口】

    【黑馬頭條之內(nèi)容安全第三方接口】

    本筆記內(nèi)容為黑馬頭條項(xiàng)目的文本-圖片內(nèi)容審核接口部分 目錄 一、概述 二、準(zhǔn)備工作 三、文本內(nèi)容審核接口 四、圖片審核接口 五、項(xiàng)目集成 內(nèi)容安全是識(shí)別服務(wù),支持對(duì)圖片、視頻、文本、語(yǔ)音等對(duì)象進(jìn)行多樣化場(chǎng)景檢測(cè),有效降低內(nèi)容違規(guī)風(fēng)險(xiǎn)。 目前很多平臺(tái)都支持

    2024年02月15日
    瀏覽(24)
  • 我調(diào)用第三方接口遇到的13大坑

    我調(diào)用第三方接口遇到的13大坑

    在實(shí)際工作中,我們經(jīng)常需要在項(xiàng)目中調(diào)用第三方API接口,獲取數(shù)據(jù),或者上報(bào)數(shù)據(jù),進(jìn)行數(shù)據(jù)交換和通信。 那么,調(diào)用第三方API接口會(huì)遇到哪些問題?如何解決這些問題呢? 這篇文章就跟大家一起聊聊第三方API接口的話題,希望對(duì)你會(huì)有所幫助。 ? 一般我們?cè)诘谝淮螌?duì)接

    2023年04月16日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包