Webservice возвращает неправильный заголовок ответа типа контента

Я пытаюсь использовать сторонний веб-сервис (на основе php) в приложении asp.net C#, но мне не удалось настроить сервис. Уже пробовал добавить сервис / веб-ссылку - все та же ошибка:

Тип содержимого text/html ответного сообщения не соответствует типу содержимого привязки (text/xml; charset=utf-8). При использовании пользовательского кодировщика убедитесь, что метод IsContentTypeSupported реализован правильно. Первые 402 байта ответа были: '> Soap: Envelope xmlns: soap = "http://schemas.xmlsoap.org/soap/envelope/ "xmlns: xsi =" http://www.w3.org/2001/XMLSchema-instance "xmlns: xsd =" http://www.w3.org/2001/XMLSchema ">;<...

[Ответ был отредактирован вручную, чтобы правильно отображать> <символы, в противном случае он совершенно корректен]

Мне кажется, что это совершенно правильный ответ, и я попытался посмотреть, что пишет fiddler в заголовках ответов - Content-Type: text/html, который, вероятно, является источником проблемы - веб-служба отправляет неправильный тип содержимого (вместо этого text/html) text/xml), но как настроить мой клиент на игнорирование / переопределение полученного типа контента? Гугл ничего мне не дает, так что, пожалуйста, если кто-нибудь может помочь - где проблема? Конфигурация привязки \ конечной точки - это базовая / конечная точка по умолчанию basicHttpBinding / endpoint, которая генерируется VS2010 при использовании опции Добавить ссылку на службу, там ничего не изменилось. Заранее спасибо.

[App.config]

<?xml version="1.0"?>
<configuration>
<configSections>
<sectionGroup  name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0,      Culture=neutral, PublicKeyToken=b77a5c561934e089">
  <section name="Collection.ServicePlayground.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
</configSections>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="SmsServiceSoap1" closeTimeout="00:01:00" openTimeout="00:01:00"
    receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
    bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
    useDefaultWebProxy="true">
    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
    maxBytesPerRead="4096" maxNameTableCharCount="16384" />
    <security mode="None">
    transport clientCredentialType="None" proxyCredentialType="None"
    realm="" />
    <message clientCredentialType="UserName" algorithmSuite="Default" />
    </security>
    </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://ws1.streamsms.ru/SmsService.php" binding="basicHttpBinding"
    bindingConfiguration="SmsServiceSoap1" contract="SmsService.SmsServiceSoap"
    name="SmsServiceSoap2" />
</client>
</system.serviceModel>
<applicationSettings>
<Collection.ServicePlayground.Properties.Settings>
  <setting name="Collection_ServicePlayground_WSStreamProvider_SmsService"   serializeAs="String">
    <value>http://ws1.streamsms.ru/SmsService.php</value>
  </setting>
 </Collection.ServicePlayground.Properties.Settings>
 </applicationSettings>
 </configuration>

2 ответа

Решение

Возможно, это излишне, но вы можете попробовать использовать специальный кодировщик для привязки. По умолчанию это текст / xml.

http://msdn.microsoft.com/en-us/library/ms751486.aspx

Я не уверен, но вы думаете, что вы сталкиваетесь с тем, что показано здесь: http://cushen.wordpress.com/2009/04/08/web-service-content-type-error-using-visual-studio-2008/

Кажется, довольно похоже.. Вы должны использовать Добавить веб-ссылку против Добавить ссылку на службу (поскольку последняя предназначена для служб стиля WCF?)

Может быть..:)

Другие вопросы по тегам