2013-08-19 5 views
0

Я использую веб-службу для обработки данных. И, как мне кажется, я правильно отправляю запрос. Я добавил веб-ссылки из wsdl и добавил защищенный токен. Но когда я пытаюсь получить ответ он выдает следующее сообщение об ошибке:Клиент нашел тип содержимого ответа 'multipart/related

Invalid Operation Exception: “Client found response content type of 'multipart/related".

Как я понимаю, я получаю следующее сообщение об ошибке, потому что служба использует MTOM для отправки PDF-файлов. Есть ли способ исправить веб-ссылки, поскольку он может корректно декодировать MTOM без ошибок, или я должен создать для него декодер. Отправьте запрос без использования веб-ссылок.

Я пытаюсь использовать ответ строки и передать его MTOM читателя

XmlDictionaryReader mtomReader = XmlDictionaryReader.CreateMtomReader(response.GetResponseStream() , Encoding.UTF8, XmlDictionaryReaderQuotas.Max); 

Но получить другую ошибку

System.Xml.XmlException: Content-Type header for MTOM message not found.

Пример ответа:

--MIMEBoundaryurn_uuid_F468164F66D5B7FD071377072332741 
Content-Type: application/xop+xml; charset=iso-8859-1; type="text/xml" 
Content-Transfer-Encoding: binary 
Content-ID: <0.urn:uuid:[email protected]> 

Soap-XML

--MIMEBoundaryurn_uuid_F468164F66D5B7FD071377072332741 
Content-Type: application/pdf 
Content-Transfer-Encoding: binary 
Content-ID: <urn:uuid:[email protected]> 

PDF бинарный

--MIMEBoundaryurn_uuid_F468164F66D5B7FD071377072332741-- 

ответ

0

Я имел аналогичные проблемы с ASP.NET сгенерированный код & настройки для ChangeService (Rational Synergy) файл WSDL. Я также получал заголовок MIME вместе с XML-сообщением. Предполагая, что вы используете ссылку на службу, мне пришлось изменить файл web.config со следующими изменениями:

Сначала мне пришлось изменить HttpBinding с basicHttpBinding на webHttpBinding, добавить поведение и настроить конечную точку.

В конфигурации ниже изменений выделены жирным

<bindings> 
    <!-- basicHttpBinding> 
    <binding name="ChangeServiceHttpBinding" messageEncoding="Mtom" /> 
    </basicHttpBinding --> 
    <webHttpBinding> 
    <binding name="ChangeServiceHttpBinding" /> 
    </webHttpBinding> 
</bindings> 
<behaviors> 
    <endpointBehaviors> 
    <behavior name="webEndpoint"> 
     <webHttp defaultBodyStyle="Wrapped" defaultOutgoingResponseFormat="Xml" 
      helpEnabled="true"/> 
    </behavior> 
    </endpointBehaviors> 
</behaviors>  
<client> 
    <endpoint address="http://hostname:port_number/change/webservices/ChangeService" 
      binding="webHttpBinding" 
      bindingConfiguration="ChangeServiceHttpBinding"    
      contract="ChangeSynergyService.ChangeService" 
      name="ChangeServiceHttpPort" behaviorConfiguration="webEndpoint" /> 
</client> 

Надеется, что это помогает

Смежные вопросы

 Смежные вопросы