首页 > 解决方案 > 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。

标签: phpwordpresssoap

解决方案


对于看到这一点的任何人,我都无法让 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 方法来解决他们的问题。如果没有,我会开始调查或联系他们调查他们的问题。


推荐阅读