.Net Core 当中的HttpClient模拟form-data格式数据提交

栏目: Java · 发布时间: 5年前

内容简介:由于项目中服务器是当作中转服务器使用,所以需要用到Http请求,项目中采用的是.Net Core框架,http请求使用的是HttpClient 一般前端以表单方式提交数据至服务端时,都需要设置请求头中Content-Type为mulipart/form-data,示例代码如下(vue.js):当然后端也可模拟以上的请求,代码如下(.Net Core):使用上述代码转发到第三方服务器会有问题,会无法解析表单中的数据。

由于项目中服务器是当作中转服务器使用,所以需要用到Http请求,项目中采用的是.Net Core框架,http请求使用的是HttpClient 一般前端以表单方式提交数据至服务端时,都需要设置请求头中Content-Type为mulipart/form-data,示例代码如下(vue.js):

let content = "hhhh";
let imgs = getFiles(); // getFiles()方法返回一个文件对象数组,可自定义实现,

let formData = new FormData();
formData.append('content', content); // 添加表单参数,可自行添加
for(let i = 0; i < imgs.length; i++) {
    formData.append('imgs', imgs[i].file); // 添加文件
}
this.$axios({
    url: api.postUrl, // api接口路径
    method: 'post',
    data: formData,
    // 设置请求头Content-Type为multipart/form-data;charset=UTF-8
    headers: {
        'Content-Type': 'multipart/form-data;charset=UTF-8'
    }
}).then(result => {
    this.$message({
        type: 'success',
        message: '成功'
    });
})
复制代码

当然后端也可模拟以上的请求,代码如下(.Net Core):

string url = postUrl;
var content = 'hhhh';
var fileList = getFiles(); // getFiles()方法返回一个文件对象数组
string boundary = DateTime.Now.Ticks.ToString("X");
var formData = new MultipartFormDataContent(boundary);
formData.Add(new StringContent(content), "content"); 
for(var i=0; i < fileList.Count; i++) {
    var file = fileList[i];
    byte[] data;
    using(var br = new BinaryReader(file.OpenReadStream()))
        data = br.ReadBytes((int)file.OpenReadStream().Length);
    ByteArrayContent imageContent = new ByteArrayContent(data);
    formData.Add(imageContent, 'imgs', file.FileName);
}
HttpClient httpClient = new HttpClient();
httpClient.PostAsync(url, formData).Result;

复制代码

使用上述代码转发到第三方服务器会有问题,会无法解析表单中的数据。

简要介绍下第三方服务器的情况: Node.js,框架采用Express, 解析form-data数据的中间件使用的是connect-multiparty,该服务器接收上述请求时,无法使用 req.body.content 和 req.files 获取到表单数据和文件,但是当使用中间件multer来解析form-data数据时就可以,不知道是不是中间件的问题。。

要解决上述无法解析的问题,方法就是添加表单项时,给key加双引号 "", 即改成如下:

formData.Add(new StringContent(content), "\"content\""); // 使用"\"来转义,
复制代码

添加文件表单项时作同上修改,便可以被第三方服务器成功解析到表单数据。


以上所述就是小编给大家介绍的《.Net Core 当中的HttpClient模拟form-data格式数据提交》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

剑指Offer:名企面试官精讲典型编程题(第2版)

剑指Offer:名企面试官精讲典型编程题(第2版)

何海涛 / 电子工业出版社 / 2017-5 / 65.00

《剑指Offer:名企面试官精讲典型编程题(第2版)》剖析了80个典型的编程面试题,系统整理基础知识、代码质量、解题思路、优化效率和综合能力这5个面试要点。《剑指Offer:名企面试官精讲典型编程题(第2版)》共分7章,主要包括面试的流程,讨论面试每一环节需要注意的问题;面试需要的基础知识,从编程语言、数据结构及算法三方面总结程序员面试知识点;高质量的代码,讨论影响代码质量的3个要素(规范性、完整......一起来看看 《剑指Offer:名企面试官精讲典型编程题(第2版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具