gpt4 book ai didi

php - 错误的结果 SoapVar

转载 作者:行者123 更新时间:2023-12-04 02:32:17 25 4
gpt4 key购买 nike

我正在尝试使用函数“SoapVar”发布我的 SoapHeader。当我打印变量的信息时,我可以看到发布的数据不正确:

SoapHeader Object
(
[namespace] => http://www.example.com/
[name] => Header
[data] => SoapVar Object
(
[enc_type] => 147
[enc_value] => xxx
)

[mustUnderstand] =>
)

SoapVar Object 类型的 [data]。 [data] 还有对象 [enc_type] => 147[enc_value] => xxx。我不知道这些对象是什么意思,但我得到的结果是:“缺少访问 token ”。

当我使用以下脚本时得到这个结果:

$headerVar = new SoapVar('<Header><Header><AccessToken>xxx</AccessToken></Header></Header>', XSD_ANYXML);                   
$header = new SoapHeader('http://www.example.com/', 'Header', $headerVar);

当我尝试使用数组而不是 XML 调用时,我得到以下 SoapHeader:

SoapHeader Object
(
[namespace] => http://www.example.com/
[name] => Header
[data] => Array
(
[AccessToken] => xxx
)

[mustUnderstand] =>
)

我为这个结果使用的脚本是:

$header = new SoapHeader('http://www.example.com/', 'Header', array('AccessToken' =>'xxx'));

有人知道我需要更改什么才能让 SoapVar 的脚本正常工作吗?

这是我的完整脚本:

$cluster = $result->cluster;
$qq = new domDocument();
$qq->loadXML($session->__getLastResponse());
$newurl = $cluster.'/services/process.asmx?wsdl';
try
{
$client = new SoapClient($newurl);

$headerVar = new SoapVar('<Header><Header><AccessToken>xxx</AccessToken></Header></Header>', XSD_ANYXML);
$header = new SoapHeader('http://www.example.com/', 'Header', $headerVar);
$client->__setSoapHeaders($header);
echo 'Header: <br />';
echo '<pre>';
print_r($header);
echo '</pre>';
}
catch (SoapFault $e)
{
echo $e->getMessage();
}
try
{
echo '<br /><br />XML Result:<br /><br />';
$xml = "";
$result = $client->__soapCall('ProcessXmlString', array(array('xmlRequest'=>$xml)), null, $header);
echo '<xmp>';
print_r($result->ProcessXmlStringResult);
echo '</xmp>';
}
catch (SoapFault $e)
{
echo $e->getMessage();
}

最佳答案

您当前代码的问题是您没有设置节点名称。这就是为什么您的数据(enc_value)存在但您的节点名称(enc_name)丢失的原因

$headerVar = new SoapVar('<Header><Header><AccessToken>xxx</AccessToken></Header></Header>', XSD_ANYXML, null, null, 'AccessToken');                   
$header = new SoapHeader('http://www.example.com/', 'Header', $headerVar);

这将输出:

SoapHeader Object
(
[namespace] => http://www.example.com/
[name] => Header
[data] => SoapVar Object
(
[enc_type] => 147
[enc_value] =>
xxx
[enc_name] => AccessToken
)
[mustUnderstand] =>
)

请注意,虽然您只看到“xxx”值,但您的 XML 数据的其余部分都存在。如果我执行 var_dump,我可以看到 'enc_value' == string(64)

我不知道您的端点期望什么,因此该部分可能需要一些调整。

关于php - 错误的结果 SoapVar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60111809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com