c# - httpclient - 如何在多部分中将 Content-Disposition 设置为 "application/json;"

标签 c# windows-phone-8 multipart dotnet-httpclient

使用 System.Net.Http.Httpclient,我正在尝试使用 C# 和 wp8 进行多部分发布。

这是我的代码片段:

varclient = new HttpClient();

client.DefaultRequestHeaders.TryAddWithoutValidation(    
"Content-Type", "application/json");

content = new MultipartFormDataContent();
content.Add(new StringContent(requestObj, Encoding.UTF8, "application/json"), "request");

但是使用 Fiddler,我注意到我正在发送这个:

内容配置:表单数据;名称=请求

内容类型:文本/纯文本; charset=utf-8

当我需要发送这个时(取自正在通话的安卓设备):

内容配置:application/json; name="请求"

内容类型:文本/纯文本; charset=UTF-8

  • 如何达到预期效果?

最佳答案

关于:

使用 TryAddWithoutValidationHttpContent 上设置标题

并将 MultipartFormDataContent 更改为 MultipartContent 对象:

var content = new MultipartContent();

var contentData = new StringContent(requestObj, Encoding.UTF8, "application/json");
contentData.Headers.TryAddWithoutValidation("Content-Disposition", "application/json name=request");
content.Add(contentData);

这导致这些 header

POST http://www.directupload.net/index.php?mode=upload HTTP/1.1
Content-Type: multipart/mixed; boundary="6905763f-e85a-44f9-b7f4-8967b357addf"
Host: www.directupload.net
Content-Length: 274
Expect: 100-continue
Connection: Keep-Alive

--6905763f-e85a-44f9-b7f4-8967b357addf
Content-Type: application/json; charset=utf-8
Content-Disposition: application/json name=request

{    "id": 1,    "name": "A green door",    "price": 12.50,    "tags": ["home", "green"]}
--6905763f-e85a-44f9-b7f4-8967b357addf--

关于c# - httpclient - 如何在多部分中将 Content-Disposition 设置为 "application/json;",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29148292/

相关文章:

.net - 将图像数据缓冲区传递到 Windows Phone 8 上的 Windows 运行时

windows-phone-8 - 使用 Windows 8 电话自动调用电话号码

windows-phone-8 - 如何加载高分辨率图像Windows Phone任务代理? [内存不足]

java - Tomcat 8 中的多部分文件最大大小配置

typescript - Fastify 多部分/表单数据错误 : "body must be object"

c# - 在需要特殊字符的密码中是否有我不应该支持的特殊字符? (网络矩阵 C#)

c# - NBuilder - 创建嵌套对象时出现问题

android - Android 多文件分段上传的进度条

c# - 编写 PowerShell Cmdlet 时如何处理路径?

c# - nHibernate QueryOver 在参数为空时获取所有记录