WSE 3.0 установил тип контента
-
06-09-2019 - |
Вопрос
У меня к вам простой вопрос, который я просто не могу уложить в голове.
Ситуация следующая:
- Мы создаем и отправляем запрос в веб-сервис, используя WSE 3.
- Веб-сервис написан на Java.
Большинство вещей в порядке, но я не могу повлиять на ContentType ни WebResuest, ни WebResponse, и это вызывает некоторые проблемы.
Сообщение об ошибке, которое я продолжаю получать, следующее:
Клиент обнаружил тип содержимого ответа ' application/xop+xml;type="text/xml;charset=utf-8" ', но ожидается "text/xml".Запрос не выполнен с сообщением об ошибке:....
В деталях сообщения об ошибке содержится ответ на наш вызов с сервера, и он проходит правильно.Очевидно, что это не так хорошо, как сейчас, поскольку происходит исключение :).
Итак, как мне установить ожидаемый тип контента для ответа?
Если я прав, запрос и ответ в WSE 3.0 должны иметь один и тот же ContentType.Поэтому я подумал, что попытаюсь установить для request.Headers[HttpRequestHeader.ContentType] ожидаемое значение, но безуспешно.(кроме того, я могу установить тип контента HttpWebRequest во многих местах, но ни один из них, похоже, не помогает)
Решение
К счастью, проблема решена, поэтому вот решение для дальнейшего использования:
Наш клиент наследует класс WebServicesClientProtocol, в котором есть метод GetWebResponse(..).Простое переопределение этого метода и изменение ContentType ответа, похоже, сработало.
protected override WebResponse GetWebResponse(System.Net.WebRequest request)
{
WebResponse response = base.GetWebResponse(request);
response.Headers[HttpResponseHeader.ContentType] = "text/xml";
return response;
}