WSE 3.0 установить тип контента - PullRequest
0 голосов
/ 02 июня 2009

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

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

  • Мы создаем и отправляем запрос в веб-сервис, используя 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 в нескольких местах, но ни одно из них, похоже, не помогает)

1 Ответ

1 голос
/ 03 июня 2009

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

Наш клиент наследует от класса WebServicesClientProtocol, в котором есть метод GetWebResponse (..). Простое переопределение этого метода и изменение ContentType Ответа, похоже, сработало для нас.

    protected override WebResponse GetWebResponse(System.Net.WebRequest request)
    {
        WebResponse response = base.GetWebResponse(request);
        response.Headers[HttpResponseHeader.ContentType] = "text/xml";
        return response;
    }
...