无法处理消息,因为内容类型为 '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”

Java SOAP 消息内容类型

WCF SOAP 服务忽略内容类型字符集

无法处理该消息,因为内容类型“应用程序/xml”不是预期的类型“应用程序/soap + xml”;字符集 = utf-8 '