【问题标题】:PHP SOAP XML formatting for Java-based SOAP Web Service用于基于 Java 的 SOAP Web 服务的 PHP SOAP XML 格式
【发布时间】:2023-03-06 16:53:01
【问题描述】:

当我使用 PHP 的 SOAP 库时,我从基于 Java 的 SOAP 服务器收到错误消息,因为信封的名称以 SOAP-ENV 为前缀。网络服务需要:

我要发送的内容:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>...</SOAP-ENV:Header>
<SOAP-ENV:Body>...</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

网络服务需要什么:

<?xml version="1.0" encoding="UTF-8"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>...</s:Header>
<s:Body>...</s:Body>
</s:Envelope>

我已经浏览过php.net'S SOAP library 文档。这部分似乎没有任何内容。

是的,对于这个 Web 服务来说,它的前缀是 SOAP-ENV: 还是 s: 都很重要

以下是生成当前 XML 样式的内容:

$client = new SoapClient($url, array(
    'soap_version' => SOAP_1_1,
    'trace' => 1,
    'use' => SOAP_LITERAL)
);

$result = $client->$method($dataObject);

任何帮助将不胜感激。

【问题讨论】:

标签: java php web-services soap


【解决方案1】:

这个解决方案对我有用。

class mySoapClient extends \SoapClient
{
    public function __doRequest($request, $location, $action, $version, $one_way = 0)
    {
        $request = str_replace(
            array('SOAP-ENV', 'other-text'),
            array('s', 'new-other-text'),
            $request
        );

        return parent::__doRequest($request, $location, $action, $version, $one_way);
    }
}

数组允许你触发一系列的变化。

【讨论】:

    猜你喜欢
    • 2016-12-30
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    相关资源
    最近更新 更多