无法处理消息,因为内容类型为 'text/xml; charset=utf-8' 不是预期的类型 'application/soap+xml;字符集=utf-8'
Posted
技术标签:
【中文标题】无法处理消息,因为内容类型为 \'text/xml; charset=utf-8\' 不是预期的类型 \'application/soap+xml;字符集=utf-8\'【英文标题】:Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'无法处理消息,因为内容类型为 'text/xml; charset=utf-8' 不是预期的类型 'application/soap+xml;字符集=utf-8' 【发布时间】:2019-05-28 07:36:39 【问题描述】:在实现以下代码后,我收到“无法处理消息,因为内容类型 'text/xml; charset=utf-8' 不是预期的类型 'application/soap+xml; charset=utf-8'”。请帮助调查此问题。
我尝试使用 SOAP UI 提供相同的服务并取得了成功。将 SOAP 版本更改为 1.1 后,我也收到了与 SOAP UI 相同的消息。
示例代码
<?php
$context = stream_context_create([
'ssl' => [
'soap_version' => SOAP_1_2,
'verify_peer' => false,
'verify_peer_name' => false,
'connection_timeout' => 1
]
]);
$requestParams = '<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Header>
<CustomHeader xmlns="http://schemas.test.com/CustomHeader">
</CustomHeader>
</s:Header>
<s:Body>
</s:Body>
</s:Envelope>';
$client = new SoapClient('https://myservice.svc?singlewsdl', array('stream_context' => $context));
$client->__setLocation('https://myservice.svc');
$response = $client->__soapCall('mymethod', array($requestParams));
?>
【问题讨论】:
【参考方案1】:我认为您不能在 SSL 参数下设置肥皂版本。 尝试在初始化期间将soap版本设置为不同的参数。
$client = new SoapClient('https://myservice.svc?singlewsdl', array('soap_version' => SOAP_1_2,'stream_context' => $context));
【讨论】:
使用这种方式后出现服务不可用错误。 这意味着您的 SOAP 调用成功。您可能会收到此错误,因为您可能传递了一些不匹配的数据。以上是关于无法处理消息,因为内容类型为 'text/xml; charset=utf-8' 不是预期的类型 'application/soap+xml;字符集=utf-8'的主要内容,如果未能解决你的问题,请参考以下文章
HTTP 415 无法处理消息,因为内容类型为 'application/json; charset=utf-8' 不是预期的类型 'text/xml;字符集=utf-8'
无法处理消息,因为内容类型 'text/xml;charset=UTF-8' 不是预期的类型 'application/soap+xml;字符集=utf-8'
无法处理消息,因为内容类型“application/soap+msbin1”不是预期的类型“text/xml”
无法处理该消息,因为内容类型“应用程序/xml”不是预期的类型“应用程序/soap + xml”;字符集 = utf-8 '