WebClient设置标头

时间:2011-07-03 02:35:00

标签: c# .net header webclient

如何在webClient课程中设置标题? 我试过了:

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);

4 个答案:

答案 0 :(得分:39)

如果标题已存在:

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

如果是新标题:

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

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

<强>更新

看起来对WebClient类的“Content-Type”标题有一些奇怪的限制。查看使用client.Download方法(DownloadData,DownloadFile等...)

查看在webclient上使用“UploadFile”方法是否有效,而不是手动执行。它返回respose body byte []。

如果您继续遇到WebClient问题,请尝试使用普通的旧HttpRequest / HttpWebRequest。

答案 1 :(得分:13)

您似乎无法使用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\"}"));

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

如果使用UploadValues方法,则无法更改Content-Type,它必须是application / x-www-form-urlencoded,请参阅webclient源代码 enter image description here