php - SOAP API 错误:对象引用未设置为对象的实例
问题描述
我正在尝试从 Wordpress 网站上的 SOAP API 中提取数据。我正在使用 PHP SoapClient 库。
在过去的一周里,我搜索了互联网,尝试了我能找到的所有可能的解决方案,包括尝试其他库,但没有成功。我什至还没有到可以提取数据的地步,我只是想登录这个服务,我可以通过第三方应用程序确认登录和其他功能。
我也尝试将我的代码重构到它自己的类中并以这种方式调用,但同样的问题也会发生。
无论我尝试什么,我都会收到同样的错误:
Fatal error: Uncaught SoapFault exception: [soap:Server] System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.NullReferenceException: Object reference not set to an instance of an object. at NjoynDataGateway.Login(String pr_UserName, String pr_Password, Boolean pr_AbortExistingSession) --- End of inner exception stack trace
这是我正在使用的代码:
$url = 'https://qa1.njoyn.com/CL4/net/WebService/NjoynDataExport.asmx?wsdl';
$username = 'username';
$password = 'password';
$abort_session = true;
$namespace = "http://njoyn.com/";
$soap_client = new SoapClient($url);
// Body of the Soap Header.
$headerbody = [
'pr_UserName' => $username,
'pr_Password' => $password,
];
// Create Soap Header.
$header = new SOAPHeader($namespace, 'AuthHeader', $headerbody);
$soap_client->__setSoapHeaders($header);
$result = $soap_client->__SoapCall('Login', [
'pr_UserName' => $username,
'pr_Password' => $password,
'pr_AbortExistingSession' => $abort_session,
]);
var_dump($result);
预期的结果将不是一个错误的开始。根据他们的文档,登录方法应该返回 true。
解决方案
对于看到这一点的任何人,我都无法让 SOAP API 正常工作。我尝试了我能想到的一切。我尝试了几十种不同的编码方法,尝试连接到其他没有问题的 SOAP API。我尝试了许多在线 SOAP API 客户端,除了一个之外,所有客户端都失败了。
该Object reference not set to an instance of an object
错误是来自他们的 API 的响应。我尝试的所有失败的在线 SOAP 客户端都使用 PHP SoapClient 库,其中一个使用了 Node.JS 库。一个有效的是http://www.soapclient.com/soapTest.html,它使用了一个 C++ 库。因此,他们的 API 与其中一些库交互的方式可能存在某种问题。我根本不熟悉 SOAP 的复杂性,所以就我所知。对我来说幸运的是,他们能够为我提供一个链接,我可以从中获取我需要的数据。
希望其他遇到此问题的人可以找到一种非 SOAP 方法来解决他们的问题。如果没有,我会开始调查或联系他们调查他们的问题。
推荐阅读
- c# - 安装的 NuGet 包不在命名空间中?
- c++ - 为什么输出是
- azure - Azure Web 应用程序的 Maven 插件"
"不工作 - apache-spark - Spark - 如何将约 20TB 的数据从 DataFrame 写入配置单元表或 hdfs?
- python-3.x - scrapy - [twisted] NameError: name 'connect' 未定义
- laravel-5.4 - 使用未定义的常量 id - 在 laravel 5.4 中假定为 'id'
- python-3.x - python while循环在一个函数中
- javascript - 未定义索引:XAMPP 中的名称
- python - 如何在没有视图模型的情况下呈现 html 页面?
- mysql - 为什么在尝试使用命令行进入 mysql 时出现“权限被拒绝”?