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

spring boot實(shí)現(xiàn)postman中form-data傳參方式

這篇具有很好參考價值的文章主要介紹了spring boot實(shí)現(xiàn)postman中form-data傳參方式。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

項目場景:

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


問題描述

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

spring boot實(shí)現(xiàn)postman中form-data傳參方式

?但是在程序中調(diào)用就報錯了,之前用的是HttpClient的方式請求的

public StringBuffer caller(Map<String,String> map, String strURL) {
?? ??? ?// start
?? ??? ?HttpClient httpClient = new HttpClient();
?
?? ??? ?HttpConnectionManagerParams managerParams = httpClient
?? ??? ??? ??? ?.getHttpConnectionManager().getParams();
?? ??? ?// 設(shè)置連接超時時間(單位毫秒)
?? ??? ?managerParams.setConnectionTimeout(30000);
?? ??? ?// 設(shè)置讀數(shù)據(jù)超時時間(單位毫秒)
?? ??? ?managerParams.setSoTimeout(120000);
?
?? ??? ?PostMethod postMethod = new PostMethod(strURL);
?? ??? ?// 將請求參數(shù)的值放入postMethod中
?? ??? ?String strResponse = null;
?? ??? ?StringBuffer buffer = new StringBuffer();
?? ??? ?// end
?? ??? ?try {
?? ??? ??? ?//設(shè)置參數(shù)到請求對象中
?? ??? ??? ?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;
?? ?}

請求普通的接口沒問題,但是第三方的接口會報錯:415 Unsupported Media Type?,很明顯是請求方式的問題,然后我在請求頭加上了multipart/form-data,接口請求通了,但是報錯參數(shù)錯誤,也就是接口沒獲取到參數(shù)。

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

原因分析:

form-data主要是以鍵值對的形式來上傳參數(shù),同時參數(shù)之間以&分隔符分開。我就嘗試?yán)胢ap進(jìn)行數(shù)據(jù)的的封裝Map<String,String>,結(jié)果發(fā)現(xiàn)后臺無法正確解析參數(shù),是因?yàn)閙ap封裝后并不是以&鏈接的。


解決方案:

最后利用spring來作為后端框架,form-data利用LinkedMultiValueMap對象來包裝多個參數(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ù)到請求對象中
?? ??? ?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的方式。文章來源地址http://www.zghlxwxcb.cn/news/detail-511814.html

到了這里,關(guān)于spring boot實(shí)現(xiàn)postman中form-data傳參方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Okhttp實(shí)現(xiàn)參數(shù)請求接口用postman的form-data請求接口

    Okhttp實(shí)現(xiàn)參數(shù)請求接口用postman的form-data請求接口

    1.看下圖,是不是這種訪問方式 2.如果是這種訪問方式,使用okhttp請求接口是這樣的。

    2024年02月04日
    瀏覽(27)
  • 用java實(shí)現(xiàn)模仿 Postman 發(fā)送 form-data 形式的請求,并指定編碼格式

    可以使用 Apache HttpClient 庫來模仿 Postman 發(fā)送 form-data 形式的請求,并指定編碼格式。以下是一個示例代碼: 在這個示例中, YOUR_ENDPOINT_URL 應(yīng)該被替換為目標(biāo) URL。這段代碼使用了 Apache HttpClient 庫創(chuàng)建了一個帶有 form-data 的請求,并使用 UrlEncodedFormEntity 設(shè)置了編碼格式為 UTF-

    2024年02月02日
    瀏覽(37)
  • 【使用multipart/form-data方式傳遞MultipartFile參數(shù),實(shí)現(xiàn)服務(wù)間文件的傳遞】

    目錄 一、代碼實(shí)現(xiàn) 二、MultipartFile工具類 三、HttpClient使用 四、參考鏈接 一、代碼實(shí)現(xiàn) 1、A服務(wù)接收前端上傳文件并發(fā)送至B服務(wù) 引入依賴 使用MultipartFile接收前端文件 調(diào)取第三方接口,發(fā)送 MultipartFile 文件 2、B服務(wù)接收文件 二、MultipartFile工具類 簡介:MultipartFile是SpringMV

    2024年02月12日
    瀏覽(19)
  • postman上傳文件(multipart/form-data請求)

    postman上傳文件(multipart/form-data請求)

    網(wǎng)頁的form表單中,如果存在上傳文件的表單,則需要將form標(biāo)簽設(shè)置enctype=\\\"multipart/form-data\\\"屬性,意思是將Content-Type設(shè)置成multipart/form-data。 那么如何使用 postman發(fā)送 multipart/form-data請求呢? Content-Type: multipart/form-data; boundary= 表單中的 enctype 屬性規(guī)定在發(fā)送到服務(wù)器之前應(yīng)該如

    2024年02月02日
    瀏覽(33)
  • Postman form-data、x-www-form-urlencoded的區(qū)別

    Postman form-data、x-www-form-urlencoded的區(qū)別

    我們在平時的postman請求調(diào)試,以及web的http請求開發(fā)時,常常能看到以下幾種傳參的形式 form-data、x-www-form-urlencoded、raw、binary,那么這些請求方式的區(qū)別是什么呢? 1 、 form-data: 就是http請求中的multipart/form-data,它會將表單的數(shù)據(jù)處理為一條消息,以標(biāo)簽為單元,用分隔符分開

    2024年01月24日
    瀏覽(33)
  • postman中 form-data、x-www-form-urlencoded、raw、binary的區(qū)別

    postman中 form-data、x-www-form-urlencoded、raw、binary的區(qū)別

    multipart/form-data:可以上傳文件,以及表單鍵值對,最后會轉(zhuǎn)化為一條信息; x-www-form-urlencoded:只能上傳鍵值對,并且鍵值對都是間隔分開的。 raw:可以上傳任意格式的文本,可以上傳text、json、xml、html等 1、form-data: 就是http請求中的 multipart/form-data ,它會將表單的數(shù)據(jù)處理為

    2024年03月24日
    瀏覽(29)
  • postman 發(fā)送post請求中的x-www-form-urlencoded和form-data的區(qū)別
  • 使用postman發(fā)送請求,提示Content type ‘multipart/form-data not supported

    使用postman發(fā)送請求,提示Content type ‘multipart/form-data not supported

    1、原因:后端通過@RequestBody 的方式接收參數(shù),不能通過form-data方式傳參,每一個請求必須是通過實(shí)體對象進(jìn)行傳參,需要改為使用json傳參

    2024年01月22日
    瀏覽(20)
  • post請求設(shè)置表單form-data格式的幾種方式

    post請求設(shè)置表單form-data格式的幾種方式

    我用默認(rèn)的post方法發(fā)送數(shù)據(jù)的時候發(fā)現(xiàn)后端獲取不到數(shù)據(jù),然而在network中看到參數(shù)是的確傳出去的了。而且用postman測試的時候也是可以的,比較了下兩個的不同發(fā)現(xiàn)是postman使用的是form-data格式,于是用form-data格式再次請求,發(fā)現(xiàn)OJBK 這兩種格式都是無法使用的: ? 方法一:

    2024年02月11日
    瀏覽(29)
  • 使用postMan調(diào)試接口出現(xiàn) Content type ‘multipart/form-data;charset=UTF-8‘ not supported“

    使用postMan調(diào)試接口出現(xiàn) Content type ‘multipart/form-data;charset=UTF-8‘ not supported“

    最近好久沒寫springboot項目了,然后寫了一個添加用戶的接口,使用postman測試時出現(xiàn)了問題。如下圖: org.springframework.web.HttpMediaTypeNotSupportedException: Content type ‘multipart/form-data;boundary=--------------------------121447464228391674964565;charset=UTF-8’ not supported 原因是接口做了規(guī)范,默認(rèn)就是

    2024年02月04日
    瀏覽(26)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包