Заголовки набора WebClient - PullRequest
30 голосов
/ 03 июля 2011

Как мне установить заголовок в классе 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 ]

41 голосов
/ 03 июля 2011

Если заголовок уже существует:

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

если новый заголовок:

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

Кроме того, есть вероятность, что вы получаете ошибку, потому что вы пытаетесь установить заголовки слишком поздно. Опубликуйте свое исключение, чтобы мы могли сообщить вам.

Обновление

Похоже, существуют некоторые странные ограничения для заголовка «Content-Type» с классом WebClient. Посмотрите, как использовать клиент. Методы загрузки (DownloadData, DownloadFile и т. Д.)

Проверьте, работает ли метод «UploadFile» на веб-клиенте, а не выполняется вручную. Возвращает байт respose тела [].

Если у вас по-прежнему возникают проблемы с WebClient, попробуйте просто использовать старый добрый HttpRequest / HttpWebRequest.

14 голосов
/ 12 декабря 2011

Кажется, вы не можете установить Content-type с помощью метода WebClient.UploadValues. Вы можете установить Content-type с методом WebClient.UploadData

Используйте что-то вроде,

Client.Headers["Content-Type"] = "application/json";
Client.UploadData("http://www.imageshack.us/upload_api.php", "POST", Encoding.Default.GetBytes("{\"Data\": \"Test\"}"));
0 голосов
/ 28 мая 2017

Нельзя изменить Content-Type, если вы используете метод UploadValues, он должен быть application / x-www-form-urlencoded, см. Исходный код веб-клиента enter image description here

0 голосов
/ 03 июля 2011

Вы пробовали этот синтаксис: client.Headers.Add("Content-Type", "image/jpeg");

Какая у вас трассировка стека? В какой момент вы устанавливаете это? А под какой версией IIS / OS вы работаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...