gpt4 book ai didi

调用 WSDL 提供的函数时,PHP 5 SOAP 客户端返回 NULL

转载 作者:可可西里 更新时间:2023-11-01 13:22:04 25 4
gpt4 key购买 nike

我正在尝试使用网络服务从我的 PHP 应用程序中查找特定用户。我在 ASP.NET 中成功地使用了完全相同的 Web 服务。

基本上,我按照 PHP 文档告诉我的方式进行所有操作,并且使用与 ASP.NET 中相同的方法/变量(对于网络服务本身),但我似乎无法获得结果。

该函数在 __getFunctions() 中列出并且应该返回 anyType,如果我理解正确的话,这相当于 PHP 中的 mixed:

array(1) { [0]=>  string(63) "anyType basicSearch(string $sharedSecret, string $searchParams)" } 

当我调用 basicSearch() 时,它似乎返回 NULL。

basicSearch() 应该返回包含信息的 XML 文档。在 ASP.NET 中,我曾经简单地将响应转换为 XmlDocument。我也应该在 PHP 中这样做吗?使用哪种 XML 文档表示(SimpleXML、DOM 等)?

会不会因为PHP无法理解格式就显示为NULL?

我在 PHP 中做错了什么吗?或者我应该查看 Web 服务本身并尝试在那边进行调试?

<?php
$client = new SoapClient($wsdl_url);

echo $client->__getFunctions();
echo "<br />\n";
echo $client->basicSearch($key, $req);
?>

PS:我使用的是 PHP 5 库。也许使用像 nu-soap 这样的其他库会有帮助吗?网上似乎有更多关于它的文档。


更新:

使用数组传递参数不起作用,SOAP 需要单独的参数。调用 __getLastRequest() 返回一个连接 $key 和 $req 的字符串,没有其他 XML。调用 __getLastResponse() 返回一个空字符串。不会抛出任何异常。似乎 PHP 不知道如何处理我给它的参数,即使它已经解析了 WSDL 文件,因为我在调用 __getFunctions() 时列出了我使用的函数。

如有任何帮助,我们将不胜感激。

更新':仍然没有有效的解决方案。我很困惑...

最佳答案

当我开始在 php 中使用 SoapClient 库时,我发现整个事情非常困惑。格式化这些东西的正确方法如下:

$client = new SoapClient( $wsdl_url, array( "trace" => 1 ) );

$params = array(
"sharedSecret" => "thisIsSomeSecret",
"searchParams" => "thisIsSomeSearchParam"
);

$response = $client->basicSearch( $params );

没有看到响应,我无法告诉您如何引用返回参数,但它的存储方式是作为 stdClass 对象的成员 var。这样你就可以像这样引用返回......

$reponse->paramName;

如果您保留数组(“trace”=> 1)选项集,一个不错的技巧是您可以调用这两个函数....

$respXML = $client->__getLastResponse();
$requXML = $client->__getLastRequest();

...查看发送出去的实际 xml,查看其格式是否正确。小心,SoapClient 有很多问题。虽然比 nusoap 好得多,但不要去找那些垃圾。

关于调用 WSDL 提供的函数时,PHP 5 SOAP 客户端返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1328878/

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