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

如果标头已存在:

 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。

看来你无法使用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\"}")); 

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

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

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