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

java 發(fā)送 http 文件 post,form-data格式的數(shù)據(jù),MultipartEntityBuilder addTextBody中文亂碼

這篇具有很好參考價(jià)值的文章主要介紹了java 發(fā)送 http 文件 post,form-data格式的數(shù)據(jù),MultipartEntityBuilder addTextBody中文亂碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

平常我們對(duì)接第三方都是以json的數(shù)據(jù)進(jìn)行數(shù)據(jù)交互的,這次第三方接口只支持form-data格式的表單數(shù)據(jù),傳json數(shù)據(jù)對(duì)方不支持,通過(guò)百度和嘗試各種方案最終完美解決,后期再慢慢優(yōu)化吧。還有一個(gè)問(wèn)題,數(shù)據(jù)中包含中文的戶,到第三方是亂碼的,經(jīng)過(guò)百度參考前輩的經(jīng)驗(yàn),完沒(méi)解決addTextBody亂碼問(wèn)題。記錄下工作中遇到的一個(gè)小問(wèn)題!

請(qǐng)求通過(guò)httpClient上傳文件

package com.example.demo.controller;

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import java.io.File;
import java.io.IOException;

/**
 * @program: demo
 * @description: 描述
 * @author: 
 * @date: 2022-09-08 14:07
 **/


public class TestFormData {
    public static void main(String args[]) throws Exception {

        String url = "http://127.0.0.1/subject/file";
        File file = new File("/Users/Desktop/5555.png");
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse response = null;
        try {
            HttpPost httpPost = new HttpPost(url);
            //HttpMultipartMode.RFC6532參數(shù)的設(shè)定是為避免文件名為中文時(shí)亂碼
            MultipartEntityBuilder builder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
            httpPost.addHeader("Authorization", "11222233333");//頭部放文件上傳的head可自定義
            //builder.addTextBody("name", "張三"); 漢字會(huì)亂碼 需要用下面的方法處理
            ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8);
            StringBody stringBody = new StringBody("李四5",contentType);
            builder.addPart("name", stringBody);

            builder.addBinaryBody("photo", file);//其余參數(shù),可自定義
            builder.addTextBody("subject_type", "1");

            builder.addTextBody("start_time", "1662691418");
            builder.addTextBody("end_time", "1662720218");

            HttpEntity entity = builder.build();
            httpPost.setEntity(entity);
            response = httpClient.execute(httpPost);// 執(zhí)行提交
            HttpEntity responseEntity = response.getEntity();//接收調(diào)用外部接口返回的內(nèi)容
            // 通過(guò)EntityUtils中的toString方法將結(jié)果轉(zhuǎn)換為字符串
            String result = EntityUtils.toString(responseEntity);
            System.out.println(result);//返回的json數(shù)據(jù) 之后自己的業(yè)務(wù)處理
        } catch (Exception e) {
            //logger.error("上傳文件失?。?,e);
            System.out.println("LLLLLLLl");
        } finally {//處理結(jié)束后關(guān)閉httpclient的鏈接
            try {
                if (httpClient != null) {
                    httpClient.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

postman這樣傳的數(shù)據(jù)格式

?

builder.addtextbody,java,http,apache

httpcomponent框架MultipartEntityBuilder addTextBody中文亂碼

// 使用addPart+ StringBody代替addTextBody,解決中文亂碼

// builder.addTextBody(entry.getKey(), entry.getValue());

ContentType contentType = ContentType.create(HTTP.PLAIN_TEXT_TYPE, HTTP.UTF_8);
StringBody stringBody = new StringBody(entry.getValue(),contentType);
builder.addPart(entry.getKey(), stringBody);文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-544099.html

到了這里,關(guān)于java 發(fā)送 http 文件 post,form-data格式的數(shù)據(jù),MultipartEntityBuilder addTextBody中文亂碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(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)文章

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

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

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

    2024年02月11日
    瀏覽(29)
  • c#HTTP使用form-data發(fā)送請(qǐng)求

    這個(gè)一直研究了很久,通過(guò)json字符串解析成鍵值對(duì),再添加到Http請(qǐng)求中,經(jīng)過(guò)測(cè)試可以正常接收數(shù)據(jù)。 封裝了方法 還有另一種簡(jiǎn)單的方法

    2024年02月11日
    瀏覽(20)
  • postman 發(fā)送post請(qǐng)求中的x-www-form-urlencoded和form-data的區(qū)別
  • Go語(yǔ)言項(xiàng)目后端使用gin框架接收前端發(fā)送的三種格式數(shù)據(jù)(form-data,json,Params)

    Go語(yǔ)言項(xiàng)目后端使用gin框架接收前端發(fā)送的三種格式數(shù)據(jù)(form-data,json,Params)

    使用gin框架的BindJSON方法,將前端的json格式數(shù)據(jù)將后端的結(jié)構(gòu)體相綁定,從而獲取到前端所發(fā)送的數(shù)據(jù),并返回給前端 1.將前端發(fā)送過(guò)來(lái)的數(shù)據(jù)全部返回 2.將前端發(fā)送過(guò)來(lái)的json格式數(shù)據(jù)選擇性返回 ? 使用gin框架的PostForm方法,從而獲取到前端form格式的參數(shù) 使用gin框架中的

    2024年02月01日
    瀏覽(436)
  • Java發(fā)送form-data請(qǐng)求

    在Java中發(fā)送form-data請(qǐng)求,可以使用Apache HttpClient或OkHttp這樣的HTTP客戶端庫(kù)來(lái)發(fā)送請(qǐng)求。 1.添加依賴 2.代碼 對(duì)于HttpClient對(duì)象,HttpClientBuilder.create().build()創(chuàng)建的實(shí)例是 不需要手動(dòng)關(guān)閉 的。 在使用HttpClientBuilder創(chuàng)建HttpClient對(duì)象時(shí),不需要手動(dòng)關(guān)閉HttpClient對(duì)象。這是因?yàn)镠ttpCli

    2024年02月10日
    瀏覽(25)
  • spring-boot 接收f(shuō)orm表單 多文件加多字段數(shù)據(jù)(postman在form-data格式下傳數(shù)組和集合)

    spring-boot 接收f(shuō)orm表單 多文件加多字段數(shù)據(jù)(postman在form-data格式下傳數(shù)組和集合)

    前言 該博客多用于記錄自己的問(wèn)題 ?在寫項(xiàng)目的時(shí)候遇到這種業(yè)務(wù)情況: 需要保存整個(gè)頁(yè)面的數(shù)據(jù),數(shù)據(jù)包含 多個(gè)字段信息 和 多個(gè)文件 ?結(jié)合網(wǎng)上的處理思路,我最終實(shí)現(xiàn)了這種業(yè)務(wù)需求并整理一下 前端單獨(dú)提交字段和文件比較方便簡(jiǎn)單,本人不太了解前端,既然前端說(shuō)

    2024年02月03日
    瀏覽(22)
  • python使用requests提交post請(qǐng)求并上傳文件(multipart/form-data)

    python使用requests提交post請(qǐng)求并上傳文件(multipart/form-data)

    目錄 一、背景 二、請(qǐng)求接口上傳文件 ? ? ? ? 2.1、分析接口 ? ? ? ? 2.2、python進(jìn)行請(qǐng)求 三、總結(jié) ? ? ? ? 也是前幾天,有一個(gè)需求上傳文件需要自動(dòng)化。具體是上傳到系統(tǒng)一個(gè)文件,并收到返回結(jié)果??紤]使用python的requests,一般這種查詢或上傳文件的接口都是post請(qǐng)求。

    2024年02月12日
    瀏覽(19)
  • Java請(qǐng)求調(diào)用參數(shù)格式為form-data類型的接口

    Java請(qǐng)求調(diào)用參數(shù)格式為form-data類型的接口

    接口參數(shù)使用postman調(diào)用如圖所示,只能使用form-data格式調(diào)用 使用java代碼發(fā)送http請(qǐng)求實(shí)現(xiàn)此種方式的接口調(diào)用 特別說(shuō)明:form的Content-Type屬性為編碼方式 常用有兩種 :application/x-www-form-urlencoded和multipart/form-data,默認(rèn)為application/x-www-form-urlencoded。 x-www-form-urlencoded :當(dāng)action為

    2024年02月12日
    瀏覽(25)
  • Python 實(shí)現(xiàn)http server接收mutipart/form-data文件 方法1

    Python 實(shí)現(xiàn)http server接收mutipart/form-data文件 方法1

    PostMan生成Python 代碼: 代碼基本功能 :實(shí)現(xiàn)將客戶端發(fā)送的文件轉(zhuǎn)發(fā)到本地。 代碼中的打印 :為了調(diào)試方便代碼中增加了一些關(guān)于boudary的打印。 代碼中的自定義字段 :代碼中的 ‘file’ 就是postman客戶端請(qǐng)求中的文件名稱。

    2024年02月07日
    瀏覽(16)
  • [micropython k210] 基于 Socket 實(shí)現(xiàn) MicroPython 的 HTTP 上傳文件(multipart/form-data)

    [micropython k210] 基于 Socket 實(shí)現(xiàn) MicroPython 的 HTTP 上傳文件(multipart/form-data)

    下述內(nèi)容需要具備 HTTP 的基礎(chǔ)知識(shí),如果不知道的可以過(guò)一遍 HTTP 協(xié)議詳解 繼上次在 K210 實(shí)現(xiàn) HTTP Download 文件(https 也支持辣),現(xiàn)在就來(lái)說(shuō)說(shuō)直接基于 socket 的上傳文件實(shí)現(xiàn)吧。 首先準(zhǔn)備一個(gè) Server 文件服務(wù)器的 CPython 代碼,這個(gè)是再簡(jiǎn)單不過(guò)了。 可以看到實(shí)現(xiàn)處理了一個(gè)

    2024年02月08日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包