Есть ли способ получить Content-Type ответа или наоборот установить Content-Type исходящего запроса в Silverlight с помощью WebClient?
Редактировать
Мне нужно сделать http-запросы и показать их прогресс. Я хочу упаковать механизм для выполнения запросов в общий модуль и использовать его повсюду в моем коде. Это я уже сделал. Сложность заключается в том, что при отправке различных типов данных на сервер в POST у меня нет возможности сообщить серверу, что это за данные (json, xml, form encode, binary)
Полагаю, что справиться с этим можно, передав запрос? Content-type = x и установив сервер так, чтобы он предпочитал его заголовку Content-Type.
У меня также нет возможности узнать, на какой контент отвечает сервер, думаю, я могу решить эту проблему, передав ожидаемый тип данных при выполнении запроса.
Если у кого-то есть лучшее решение, пожалуйста, говорите:)
/ Edit
Вот мое затруднительное положение. Объекты HttpWebRequest / Response реализуют внутренний интерфейс, который позволяет отслеживать ход выполнения запроса. Если вы хотите выполнять большие запросы, очень важно, чтобы пользователь увидел индикатор выполнения, показывающий состояние загрузки / выгрузки.
Итак, использование HttpWebRequest / Response запрещено. Оставляя только WebClient, но я нахожу некоторые странные вещи об этом.
Он не может быть разделен на подклассы. На самом деле он не запечатан, но конструктор помечен [SecuritySafeCritical], что, насколько я могу судить, означает, что я не могу вызвать его из производного класса. По крайней мере, я потерпел неудачу и нашел в Google других, которые потерпели неудачу, но я был бы очень рад оказаться ошибочным в этом вопросе.
Внутренне он использует BrowserHttpWebResponse, который не переопределяет свойство абстрактных заголовков, и WebClient.ResponseHeaders просто пересылает в m_Response.Headers, который просто генерирует NotImplementedException.
Не уверен, что Content-Type будет даже в ResponseHeaders, но я бы хотел проверить.
Кажется, у нас неудачный выбор: информация о прогрессе или типе контента, но не оба в Silverlight.
Согласно документам, также нет способа установить Content-Type для исходящего запроса с помощью WebClient. Content-Type указан как ограниченный заголовок. Хотя я на самом деле не проверял это.
Хотя интересно отметить, что в случае ошибки вы фактически получаете объект ответа и имеете доступ к StatusCode, Content-Type и т. Д.