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

springboot實(shí)現(xiàn)postman中form-data傳參實(shí)現(xiàn)過(guò)程

 更新時(shí)間:2026年04月02日 09:26:49   作者:濤哥是個(gè)大帥比  
在項(xiàng)目場(chǎng)景開發(fā)中,對(duì)接需求要求使用POST請(qǐng)求傳form-data數(shù)據(jù),使用HttpClient請(qǐng)求時(shí)遇到了415錯(cuò)誤,后改為restTemplate,封裝參數(shù)時(shí)使用LinkedMultiValueMap對(duì)象以解決參數(shù)無(wú)法正確解析的問(wèn)題

項(xiàng)目場(chǎng)景

開發(fā)中遇到對(duì)接需求時(shí)候,被要求用post請(qǐng)求傳form-data數(shù)據(jù)的時(shí)候一臉懵逼,在postman中可以調(diào)用,但是程序中怎么調(diào)用呢。

問(wèn)題描述

在postman中調(diào)用是沒問(wèn)題的

但是在程序中調(diào)用就報(bào)錯(cuò)了,之前用的是HttpClient的方式請(qǐng)求的

public StringBuffer caller(Map<String,String> map, String strURL) {
        // start
        HttpClient httpClient = new HttpClient();
 
        HttpConnectionManagerParams managerParams = httpClient
                .getHttpConnectionManager().getParams();
        // 設(shè)置連接超時(shí)時(shí)間(單位毫秒)
        managerParams.setConnectionTimeout(30000);
        // 設(shè)置讀數(shù)據(jù)超時(shí)時(shí)間(單位毫秒)
        managerParams.setSoTimeout(120000);
 
        PostMethod postMethod = new PostMethod(strURL);
        // 將請(qǐng)求參數(shù)的值放入postMethod中
        String strResponse = null;
        StringBuffer buffer = new StringBuffer();
        // end
        try {
            //設(shè)置參數(shù)到請(qǐng)求對(duì)象中
            for(String key : map.keySet()){
                postMethod.addParameter(key, map.get(key));
            }
            
            int statusCode = httpClient.executeMethod(postMethod);
            if (statusCode != HttpStatus.SC_OK) {
                throw new IllegalStateException("Method failed: "
                        + postMethod.getStatusLine());
            }
            BufferedReader reader = null;
            reader = new BufferedReader(new InputStreamReader(
                    postMethod.getResponseBodyAsStream(), "UTF-8"));
            while ((strResponse = reader.readLine()) != null) {
                buffer.append(strResponse);
            }
        } catch (Exception ex) {
            throw new IllegalStateException(ex.toString());
        } finally {
            // 釋放連接
            postMethod.releaseConnection();
        }
        return buffer;
    }

請(qǐng)求普通的接口沒問(wèn)題,但是第三方的接口會(huì)報(bào)錯(cuò):415 Unsupported Media Type ,很明顯是請(qǐng)求方式的問(wèn)題,然后我在請(qǐng)求頭加上了multipart/form-data,接口請(qǐng)求通了,但是報(bào)錯(cuò)參數(shù)錯(cuò)誤,也就是接口沒獲取到參數(shù)。

postMethod.setRequestHeader("Content-Type", "multipart/form-data");

原因分析

form-data主要是以鍵值對(duì)的形式來(lái)上傳參數(shù),同時(shí)參數(shù)之間以&分隔符分開。

我就嘗試?yán)胢ap進(jìn)行數(shù)據(jù)的的封裝Map<String,String>,結(jié)果發(fā)現(xiàn)后臺(tái)無(wú)法正確解析參數(shù),是因?yàn)閙ap封裝后并不是以&鏈接的。

解決方案

最后利用spring來(lái)作為后端框架,form-data利用LinkedMultiValueMap對(duì)象來(lái)包裝多個(gè)參數(shù),參數(shù)以key-value形式,中間以&連接。

采用restTemplate代碼的實(shí)現(xiàn)如下:

public String caller(Map<String,String> map, String strURL){
		HttpHeaders headers = new HttpHeaders();
		MultiValueMap<String, Object> map= new LinkedMultiValueMap<>();
		headers.add("Content-Type", "multipart/form-data");
	    //設(shè)置參數(shù)到請(qǐng)求對(duì)象中
        for(String key : map.keySet()){
        	map.add(key, map.get(key));
        }
		
		HttpEntity<MultiValueMap<String, Object>> requestParams = new HttpEntity<>(map, headers);
		ResponseEntity<String> response = restTemplate.postForEntity(apiUrl,requestParams,String.class);
		String result =response.getBody();
		return result;
}

最后沒用HttpClient 的方式,改為了restTemplate的方式。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 輕松掌握J(rèn)ava模板模式

    輕松掌握J(rèn)ava模板模式

    這篇文章主要幫助大家輕松掌握J(rèn)ava模板模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Java實(shí)現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組

    Java實(shí)現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組

    這篇文章主要介紹了Java實(shí)現(xiàn)將容器 Map中的內(nèi)容保存到數(shù)組,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 解決idea的debug模式突然變卡,項(xiàng)目啟動(dòng)變慢的狀況

    解決idea的debug模式突然變卡,項(xiàng)目啟動(dòng)變慢的狀況

    這篇文章主要介紹了解決idea的debug模式突然變卡,項(xiàng)目啟動(dòng)變慢的狀況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • Java?-jar命令如何運(yùn)行外部依賴JAR包

    Java?-jar命令如何運(yùn)行外部依賴JAR包

    在Java應(yīng)用部署中,java?-jar命令是啟動(dòng)可執(zhí)行JAR包的標(biāo)準(zhǔn)方式,但當(dāng)應(yīng)用需要依賴外部JAR文件時(shí),直接使用java?-jar會(huì)面臨類加載困境,本文就來(lái)聊聊該如何解決吧
    2025-06-06
  • RestTemplate get請(qǐng)求,header設(shè)置及傳參過(guò)程

    RestTemplate get請(qǐng)求,header設(shè)置及傳參過(guò)程

    文章介紹了在SpringBoot中使用RestTemplate進(jìn)行GET請(qǐng)求時(shí)的請(qǐng)求頭設(shè)置及傳參方式,包括無(wú)參數(shù)無(wú)請(qǐng)求頭、有請(qǐng)求頭無(wú)參數(shù)和有請(qǐng)求頭有參數(shù)三種情況,并提供了相應(yīng)的RestTemplate代碼示例
    2026-02-02
  • Java推送釘釘應(yīng)用消息實(shí)現(xiàn)過(guò)程

    Java推送釘釘應(yīng)用消息實(shí)現(xiàn)過(guò)程

    這篇文章主要介紹了Java推送釘釘應(yīng)用消息實(shí)現(xiàn)的相關(guān)資料,包括創(chuàng)建應(yīng)用、獲取憑證、申請(qǐng)接口權(quán)限及調(diào)用接口流程,并提供Maven依賴配置,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-07-07
  • 基于mybatis batch實(shí)現(xiàn)批量提交大量數(shù)據(jù)

    基于mybatis batch實(shí)現(xiàn)批量提交大量數(shù)據(jù)

    這篇文章主要介紹了基于mybatis batch實(shí)現(xiàn)批量提交大量數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 利用Mybatis?Plus實(shí)現(xiàn)一個(gè)SQL攔截器

    利用Mybatis?Plus實(shí)現(xiàn)一個(gè)SQL攔截器

    SQL攔截器是一種用于攔截和修改Mybatis執(zhí)行的SQL語(yǔ)句的工具,通過(guò)使用SQL攔截器,開發(fā)人員可以在執(zhí)行SQL語(yǔ)句之前或之后對(duì)其進(jìn)行修改或記錄,本文就來(lái)借助一下Mybatis-Plus實(shí)現(xiàn)一個(gè)SQL攔截器吧
    2023-05-05
  • 使用Arthas MCP對(duì)Java應(yīng)用進(jìn)行線上診斷的實(shí)踐指南

    使用Arthas MCP對(duì)Java應(yīng)用進(jìn)行線上診斷的實(shí)踐指南

    本文介紹了使用Arthas4.1.9診斷Java應(yīng)用常見問(wèn)題(CPU飆高、內(nèi)存泄漏、死鎖、線程池滿、慢方法、異常被吞)的方法,并提出構(gòu)建一個(gè)全自動(dòng)的Java應(yīng)用診斷系統(tǒng),通過(guò)AIagent結(jié)合MCP協(xié)議調(diào)用Arthas診斷工具,生成結(jié)構(gòu)化的診斷報(bào)告,簡(jiǎn)化問(wèn)題定位過(guò)程,需要的朋友可以參考下
    2026-05-05
  • Java GUI插入圖片不顯示問(wèn)題解決方法

    Java GUI插入圖片不顯示問(wèn)題解決方法

    大家好,本篇文章主要講的是Java GUI插入圖片不顯示問(wèn)題解決方法,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01

最新評(píng)論

怀集县| 凤冈县| 潞西市| 武陟县| 沂南县| 朝阳区| 江陵县| 墨玉县| 家居| 枝江市| 库车县| 刚察县| 竹山县| 和平区| 古蔺县| 哈巴河县| 江津市| 大悟县| 恩平市| 呼伦贝尔市| 霍邱县| 桦川县| 鄂托克前旗| 探索| 化德县| 宁海县| 延寿县| 琼中| 墨玉县| 阿合奇县| 上虞市| 仁寿县| 鞍山市| 兴文县| 津南区| 会泽县| 明水县| 灵山县| 教育| 灯塔市| 安丘市|