2009-10-20 5 views
9

Чтобы подключиться к стороннему сервису, мне нужно сделать Https Post. Одним из необходимых реквизитов является отправка настраиваемого типа контента.Как установить заголовок заголовка WebClient?

Я использую WebClient, но я не могу найти, как его установить. Я попытался создать новый класс и переопределить метод CreateRequest, но это приведет к сбою запроса.

Есть ли способ сделать это, не переписывая метод CopyHeadersTo?

Заранее спасибо

EDIT CopyHeaderTo является метод, который я видел, используя .NET Reflector. Он invoqued из GetWebRequest и устанавливает все заголовки запросов, включая Content-Type, из частных свойств.

ответ

1

Ну, я просто пропустил Request.ContentType propertie. Если метод GetWebRequest завышен, установка ContentType в любое нужное значение.

Тем не менее, подключение к третьей стороне не работает. Идите цифры.

Спасибо!

31

Вы можете попробовать добавить к коллекции Headers.

myWebClient.Headers.Add("Content-Type","application/xxx"); 
+3

0 Это генерирует исключение WebException, говоря, что Content-Type не может быть изменен для текущего ходатайства. –

+0

Кто выбрасывает это исключение? Это серверный скрипт, на который вы отправляете сообщения? Я протестировал пример, предоставленный в MSDN, и успешно установил заголовок Content-Type в пользовательское значение. –

+0

Мне пришлось это сделать: _client.Headers ["Content-Type"] = "application/Json" Все еще не работает правильно, но по крайней мере компилируется! Работа в silverlight 5. – RaoulRubin

5

webclient.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded"

1

я сталкиваюсь это тоже. И обнаружил, что вы должны использовать Client Http, иначе браузер Http блокирует изменение Content-Type по соображениям безопасности. This MSDN link объясните это.

WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp); 
WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp); 
client.Headers["Content-Type"] = "application/json";