我试图开发一个web应用程序,使用WCF向web服务提交一个简单的登录请求,但我不断得到“响应消息的内容类型text/plain不匹配”的错误,尽管web服务似乎返回了有效的XML。
我已经回顾了几十个类似的S.O.关于这一错误的帖子,并排除了更常见的可能性:
AuthenticationServiceClient client = new AuthenticationServiceClient(strPortName, strURL);
client.Open();
UserCredentials credentials = new UserCredentials();
credentials.userName = TestUsername;
credentials.password = TestPassword;
LoginResponse response = client.login(credentials); // Using WCF.
下面是web.config中的绑定:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="AuthenticationServiceSoapBinding" />
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://mywebserviceurl"
binding="basicHttpBinding" bindingConfiguration="AuthenticationServiceSoapBinding"
contract="MyNamespace.AuthenticationService" name="AuthenticationServiceImplPort" />
</client>
</system.serviceModel>
以下是我的错误消息:
在“webserviceurl”测试到web服务的连接时出错:System.ServiceModel.ProtocolException:响应消息的内容类型text/plain与绑定的内容类型(text/xml;charset=UTF-8)不匹配。如果使用自定义编码器,请确保IsContentTypeSupported方法已正确实现。响应的前788字节是:“
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<loginReponse xmlns="urn:xxxx">
<authKey>xxxx</authKey>
<authMetadata>
<IPaddress>https://MyWebApplicationURL</IPaddress>
<loginTimestamp>xxxx</loginTimestamp><levelOfAssurance>
<AuthMechanism>xxxx</AuthMechanism>
<VettingAssertion>xxxx</VettingAssertion>
</levelOfAssurance>
</authMetadata>
<errorText></errorText>
<successfulLoginFlag>true</successfulLoginFlag>
<userSummary>
<GUID>xxxx</GUID>
<commonName>xxxx</commonName>
<loginName>xxxx</loginName>
</userSummary>
<passwordExpiryDays>xxxx</passwordExpiryDays></loginReponse>
</soap:Body>
</soap:Envelope>
问题是,当服务应该用text/xml
或application/xml
响应时,它却用text/plain
响应,这正是WCF绑定为了正确处理它所需要的。从根本上说,这是服务端的一个“问题”:他们返回XML,但称之为明文,从技术上讲,明文是准确的,但不像XML内容类型那样具体。在WCF方面,内置的协议处理相当严格,并希望内容类型为text/xml
或application/xml
,以便进行反序列化。
您可以通过编写支持text/plain
但将其解析为XML的自定义WCF编码器来阻止它们的内容类型问题。
我试图开发一个使用WCF向web服务提交简单登录请求的web应用程序,但我不断收到“响应消息的内容类型text/plain不匹配”错误,尽管web服务似乎返回了有效的XML。 我查过几十个类似的S.O.并排除了更常见的可能性: 我可以从响应中看到返回的不是错误页(如本文所述)。 我似乎没有绑定不匹配的问题(如这里所讨论的)。我的应用程序和web服务都使用SOAP 1.1,我指定了“BasicHtt
G-WAN4.3.11正在以“text/plain”类型返回我的所有csp文件。这怎么能修好?!目前,它只是一个静态文件服务器。 例如,//127.0.0.1:8080/?hello.py以“Hello,Python! ”(作为text/plain)响应 这应该返回“Hello,Python!”不显示 (以text/html形式)
我有一个要求,其中,作为Web服务[Java]的一部分,我将作业的详细信息输入数据库,数据库由Windows服务[C#]异步处理,并对Javaweb服务通知作业的状态。 情景: 客户端对JavaWeb服务进行同步Restful调用。 JavaWeb Service将作业详细信息输入数据库(类似于进行异步调用),并等待Windows Service的响应(这是对JavaWeb Service的新HT
我试图使用第三方Web服务(基于php)在asp.netc#应用程序,但失败的服务配置。已经尝试添加服务/Web引用-所有相同的错误: 响应消息的内容类型 text/html 与绑定的内容类型不匹配(text/xml;charset=utf-8)。如果使用自定义编码器,请确保正确实现 IsContentTypeSupport 方法。响应的前 402 个字节是:” [已手动编辑响应以正确显示 对我来
我在使用Spring5 reactive WebClient时遇到了一个问题,当时我请求一个endpoint,该endpoint返回一个格式正确的json响应,内容类型为“text/plain;charset=utf-8”。例外情况是 以下是我提出请求的方式: 编辑:头是“正确”设置的(Accept,Content-Type),我尝试了不同的Content-Type(json,json+UTF8,
根据文档,响应自动作为JSON、XML或字符串对象提供,具体取决于响应内容。 在我的例子中,我的响应的内容类型为text/plain 这在我将字符串转换为响应,然后验证的地方工作(我已经逃过了所有的反斜杠) 这是失败的。当响应也可用作字符串时,为什么会失败 com.intuit.karate.exception.KarateExc0019:路径: $[*], 实际:["a. b. c匹配\"(\d