gpt4 book ai didi

php - 如何定义 SoapVar 命名空间?

转载 作者:可可西里 更新时间:2023-10-31 22:45:50 27 4
gpt4 key购买 nike

我需要在我的 SOAP 请求中包含此节点(使用 1.1):

<CredentialsHeader xmlns="http://www.url.com/Services/P24ListingService11"
<EMail>ricky@email.net</EMail>
<Password>password</Password>
</CredentialsHeader>

所以我有以下 PHP:

$client = new SoapClient("https://exdev.www.example.com/Services/example.asmx?WSDL", 
array(
"trace" => 1,
"exceptions" => 0,
"cache_wsdl" => 0,
'soap_version' => SOAP_1_1
)
);

$CredentialObject = new SoapVar(array('EMail' => 'ricky@email.net', 'Password' => 'password'), SOAP_ENC_OBJECT);

生成:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.example.com/Services/Example">
<SOAP-ENV:Header>
<ns1:CredentialsHeader>
<EMail>ricky@email.net</EMail>
<Password>password</Password>
</ns1:CredentialsHeader>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:EchoAuthenticated/>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

我需要做的就是使用 ns1 阻止它并在节点中实际定义 xmlns ,如下所示:

<CredentialsHeader xmlns="http://www.example.com/Services/Example">
<EMail>ricky@email.net</EMail>
<Password>password</Password>
</CredentialsHeader>

我已经在 Firefox Poster 中对此进行了测试,并且知道更改可以解决问题。

最佳答案

$CredentialObjectXML  = '<CredentialsHeader xmlns="http://www.example.com/Services/Example">
<EMail>'.$UserName.'</EMail>
<Password>'.$Password.'</Password>
</CredentialsHeader>';


$CredentialObject = new SoapVar($CredentialObjectXML,XSD_ANYXML);

这样您就可以直接使用 XSD_ANYXML 类型的 XML。

希望这能解决您的问题。

关于php - 如何定义 SoapVar 命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10848269/

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