繁体   English   中英

WebClient 设置标头

[英]WebClient set headers

如何在webClient class 中设置 header? 我试过了:

client.Headers["Content-Type"] = "image/jpeg";

引发WebException

我的代码:

WebClient client = new WebClient();
client.Headers.Set("Content-Type", "image/png");
client.Headers.Set("Content-Length", length);
client.Headers.Add("Slug", name);
NameValueCollection nvc = new NameValueCollection();
nvc.Add("file", FileContents);

Byte[] data = client.UploadValues(url, nvc);
string res = Encoding.ASCII.GetString(data);
Response.Write(res);

如果 header 已经存在:

client.Headers.Set("Content-Type", "image/jpeg");

如果是新的 header:

client.Headers.Add("Content-Type", "image/jpeg");

此外,您可能会遇到错误,因为您尝试设置标题太晚了。 发布您的例外情况,以便我们通知您。

更新

看起来对带有 WebClient class 的“内容类型”header 有一些奇怪的限制。 考虑使用 client.Download 方法(DownloadData、DownloadFile 等...)

看看在 webclient 上使用“UploadFile”方法是否有效,而不是手动进行。 它返回响应体字节[]。

如果 WebClient 仍然存在问题,请尝试使用普通的旧 HttpRequest/HttpWebRequest。

您似乎无法使用 WebClient.UploadValues 方法设置 Content-type。 您可以使用 WebClient.UploadData 方法设置 Content-type

使用类似的东西,

Client.Headers["Content-Type"] = "application/json";
Client.UploadData("http://www.imageshack.us/upload_api.php", "POST", Encoding.Default.GetBytes("{\"Data\": \"Test\"}"));

如果使用 UploadValues 方法,则不能更改 Content-Type,它必须是 application/x-www-form-urlencoded,请参阅 webclient 源代码在此处输入图像描述

您是否尝试过这种语法: client.Headers.Add("Content-Type", "image/jpeg");

你的堆栈跟踪是什么? 你在什么时候设置这个? 您在哪个版本的 IIS/OS 下运行?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM