WebClient设置标头

The*_*ask 33 .net c# webclient header

如何在webClient课堂上设置标题?我试过了:

client.Headers["Content-Type"] = "image/jpeg";
Run Code Online (Sandbox Code Playgroud)

抛出一个 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);
Run Code Online (Sandbox Code Playgroud)

jdc*_*589 44

如果标头已存在:

client.Headers.Set("Content-Type", "image/jpeg");
Run Code Online (Sandbox Code Playgroud)

如果它是一个新标题:

client.Headers.Add("Content-Type", "image/jpeg");
Run Code Online (Sandbox Code Playgroud)

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

更新

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

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

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

  • 异常详细信息:System.Net.WebException:无法更改此请求的 Content-Type 标头的默认值。 (2认同)

saj*_*ith 14

看来你无法使用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\"}"));
Run Code Online (Sandbox Code Playgroud)