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

时间:2016-11-18 14:58:55

标签: c# httpwebrequest httpclient webclient

我尝试在HttpClient的c#"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;

我已经尝试了所有类似的问题建议,并且看不到任何发送标题或不抛出某种异常。我应该放弃这个并使用我所说的更灵活的网络客户端吗?

1 个答案:

答案 0 :(得分:5)

使用

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