2009-06-02 3 views
0

У меня есть простой вопрос, для вас, что я просто не могу оторвать голову.WSE 3.0 set content type

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

  • Мы создаем и отправить запрос на веб-сервис, с помощью WSE 3.
  • Веб-сервис написан на Java.

Большинство из них все в порядке, но я не могу повлиять на ContentType WebResuest или WebResponse, и это вызывает некоторые проблемы.

ErrorMessage я получаю следующий:

Клиент нашел тип содержимого ответа от 'приложения/XOP + XML; тип = "текст/XML, кодировка = UTF-8"', но ожидается, «текст/XML. Ошибка запроса с сообщением об ошибке: ....

В подробностях сообщения об ошибке он отвечает на наш звонок с сервера, и он проходит надлежащим образом. Очевидно, что это не так хорошо, как сейчас, поскольку это происходит через исключение :).

Итак, как я могу задать ожидаемый тип содержимого для ответа?

Если я прав, запрос и ответ в WSE 3.0 должны иметь один и тот же ContentType. Поэтому я думал, что попытаюсь установить request.Headers [HttpRequestHeader.ContentType] на ожидаемый, но не повезло. (Также, я могу установить ContentType в HttpWebRequest в очень немногих местах, но ни один из них не кажется, сделать трюк)

+0

Возможно, вы уже знаете это, но только для того, чтобы быть уверенным: вы знаете, что ВФБ устарела, не так ли? Что он не поддерживает VS2008 или выше? –

+0

Да, я слышал об этом. Причина, по которой мы все еще решили использовать ее, когда мы столкнулись с несколькими блокпостами с WCF, и не было простого решения. Отсутствие документации для WCF действительно не помогло ни, ни то, что я не являюсь экспертом в веб-сервисах. (я пытаюсь :)) –

ответ

1

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

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

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