gpt4 book ai didi

php - 使用 SoapClient 将 XML 输入发送到 WSDL

转载 作者:可可西里 更新时间:2023-11-01 13:45:23 26 4
gpt4 key购买 nike

我有这个 WSDL:https://secure.softwarekey.com/solo/webservices/XmlCustomerService.asmx?WSDL

我正在尝试使用 SoapClient 向 CustomerSearch 发送请求方法。

我使用的代码如下:

$url = 'https://secure.softwarekey.com/solo/webservices/XmlCustomerService.asmx?WSDL';
$client = new SoapClient($url);

$CustomerSearch = array(
'AuthorID' => $authorID,
'UserID' => $userID,
'UserPassword' => $userPassword,
'Email' => $customerEmail
);

$xml = array('CustomerSearch' => $CustomerSearch);

$result = $client->CustomerSearch(array('xml' => $xml));

当我运行代码时,出现以下 PHP 异常:

Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'any' property

我也为 XML 尝试过这个:

$xml = "
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<CustomerSearch>
<AuthorID>$authorID</AuthorID>
<UserID>$userID</UserID>
<UserPassword>$userPassword</UserPassword>
<Email>$customerEmail</Email>
</CustomerSearch>
";

这给了我以下结果(来自 print_r):

object(stdClass)#4 (1) { ["CustomerSearchResult"]=> object(stdClass)#5 (1) { ["any"]=> string(108) "-2Invalid Xml Document" } }

documentation表示输入 XML 应该如下所示:

<CustomerSearch>
<AuthorID></AuthorID>
<UserID></UserID>
<UserPassword></UserPassword>
<SearchField></SearchField>
<SearchField></SearchField>
<!-- ...additional SearchField elements -->
</CustomerSearch>

我对 Soap 还很陌生,我试过乱搞(传入原始的、键入的 XML),但似乎无法让它工作。任何关于我可能做错了什么的见解将不胜感激。

最佳答案

我认为您需要更多地查看文档(关于 any 参数)。但是你的请求应该是这样的:

$url = 'https://secure.softwarekey.com/solo/webservices/XmlCustomerService.asmx?WSDL';
$client = new SoapClient($url);

$xmlr = new SimpleXMLElement("<CustomerSearch></CustomerSearch>");
$xmlr->addChild('AuthorID', $authorID);
$xmlr->addChild('UserID', $userID);
$xmlr->addChild('UserPassword', $userPassword);
$xmlr->addChild('Email', $customerEmail);

$params = new stdClass();
$params->xml = $xmlr->asXML();

$result = $client->CustomerSearchS($params);

编辑:这就是我在类似项目中的做法。这可能不是最佳做法。 SoapVar 可能是更好的方法 (SoapVoar example with ANY_XML)。

关于php - 使用 SoapClient 将 XML 输入发送到 WSDL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16595789/

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