Вопрос

У меня к вам простой вопрос, который я просто не могу уложить в голове.

Ситуация следующая:

  • Мы создаем и отправляем запрос в веб-сервис, используя 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;
    }
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top