当前位置: 首页 > 知识库问答 >
问题:

Web 服务返回错误的内容类型响应标头

胡云瀚
2023-03-14

我试图使用第三方Web服务(基于php)在asp.netc#应用程序,但失败的服务配置。已经尝试添加服务/Web引用-所有相同的错误:

响应消息的内容类型 text/html 与绑定的内容类型不匹配(text/xml;charset=utf-8)。如果使用自定义编码器,请确保正确实现 IsContentTypeSupport 方法。响应的前 402 个字节是:”

[已手动编辑响应以正确显示

对我来说,这似乎是一个完全有效的响应,我试图查看fiddler在响应头中写了什么——Content-Type:text/html,这可能是问题的根源——web service发送了错误的内容类型(text/html而不是text/xml ),但是如何配置我的客户机来忽略/覆盖接收到的内容类型呢?谷歌搜索让我一无所获,所以请,如果有人可以帮助-问题在哪里?Binding\endpoint配置是默认的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个答案

邵博艺
2023-03-14

我不确定,但你认为你遇到了这里显示的内容:http://cushen.wordpress.com/2009/04/08/web-service-content-type-error-using-visual-studio-2008/

似乎很相似…您应该使用添加Web参考与添加服务参考(因为后者适用于WCF样式的服务?)

可能..:)

穆俊哲
2023-03-14

也许是过度了,但您可以尝试为绑定使用自定义编码器。默认值为text/xml。

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

 类似资料:
  • 我在REST WebService中有自定义错误处理。我有返回XML/JSON作为响应的方法。在SpringBoot 2.0.9版本上一切都很好。但是在迁移到最新的(2.2.4)之后,我的错误处理测试失败了: 经过研究,我发现这与将Spring升级到5.1版本有关。文档: 错误响应的内容协商@RequestMapping的Products条件不再影响错误响应的内容类型。 如何在最新版本中重现Spr

  • 我们有一个使用node js(express js)构建的web应用程序,它位于nginx后面。 对于特定的API,我们希望将内容类型响应头设置为“text/plain”。控制器中有以下代码。 res.setHeader('Content-Type','text/plain');res.send(响应); 当服务器不在nginx后面时,这是有效的。但是当服务器在nginx后面时,响应头仍然是“应用

  • 我试图开发一个使用WCF向web服务提交简单登录请求的web应用程序,但我不断收到“响应消息的内容类型text/plain不匹配”错误,尽管web服务似乎返回了有效的XML。 我查过几十个类似的S.O.并排除了更常见的可能性: 我可以从响应中看到返回的不是错误页(如本文所述)。 我似乎没有绑定不匹配的问题(如这里所讨论的)。我的应用程序和web服务都使用SOAP 1.1,我指定了“BasicHtt

  • 我试图开发一个web应用程序,使用WCF向web服务提交一个简单的登录请求,但我不断得到“响应消息的内容类型text/plain不匹配”的错误,尽管web服务似乎返回了有效的XML。 我已经回顾了几十个类似的S.O.关于这一错误的帖子,并排除了更常见的可能性: 在响应中可以看到,返回的不是错误页(如本文所述)。 我似乎没有一个绑定的不匹配问题(如在这里讨论的)。我的应用程序和web服务都使用SOA

  • 几周以来,我一直在使用Spring-MVC开发一个rest api。REST-API工作正常,我几乎完成了最后一个问题,当涉及到对特定错误对象的错误处理时。 REST-API使用JSON作为序列化Java-Objects的格式。当服务执行过程中发生错误时,将创建一个特定的错误对象并将其发送回客户机。 当我的REST服务被标记为“produces=application/json”时,一切都很好。但

  • 我已经构建了一个RESTendpoint,它使用Spring和Apache CXF2.5来使用和生成Application/JSON。 配置: 当我使用不受支持的内容类型(如application/xml)发送请求(使用REST客户端应用程序)时,我会得到一个内部服务器错误。我希望是405,因为endpoint不支持任何其他内容类型。为什么我会得到这个例外?