无法使用C# HttpClient发送Content-Type头

9
我正在尝试在c# HttpClient请求中设置"multipart/form-data; boundary=----WebKitFormBoundaryaYcxA3wAp5XMUV2w"的Content-Type头。目前我已经尝试使用TryAddWithoutValidation,它不会抛出任何异常/错误,但是当我在fiddler中查看请求时,它并没有被添加?请参见下面的代码。
client.DefaultRequestHeaders.TryAddWithoutValidation("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundaryaYcxA3wAp5XMUV2w");
response = client.PostAsync("https://example.com", byteContent).Result;

我也尝试将要发送的字节数组转换为字符串,并使用StringContent,但是这会抛出一个异常,说"multipart/form-data; boundary=----WebKitFormBoundaryaYcxA3wAp5XMUV2w"是无效的。
StringContent testStringcontent = new StringContent(Encoding.Default.GetString(allContentBytes), Encoding.UTF8, "multipart/form-data; boundary=----WebKitFormBoundaryaYcxA3wAp5XMUV2w");
response = client.PostAsync("https://example.com", testStringcontent).Result;

我尝试了所有类似问题的建议,但似乎无法发送标题也不会抛出任何异常。我应该放弃这个方法并使用据说更加灵活的web客户端吗?


这回答了你的问题吗?如何为HttpClient请求设置Content-Type头? - Ian Kemp
1个回答

16

使用以下方法使其可工作:

ByteArrayContent byteContent = new ByteArrayContent(allContentBytes);
byteContent.Headers.Remove("Content-Type");
byteContent.Headers.Add("Content-Type", "multipart/form-data; boundary=----WebKitFormBoundaryaYcxA3wAp5XMUV2w");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接