SOAP API错误:对象引用未设置为对象的实例

时间:2019-05-03 15:26:40

标签: php wordpress soap

我正在尝试从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);

预期的结果并非一开始就有错误。根据他们的文档,login方法应该返回true。

1 个答案:

答案 0 :(得分:0)

对于任何看到这一点的人,我都无法使SOAP API正常工作。我尝试了所有我能想到的。我尝试了数十种不同的编码方法,尝试连接到其他SOAP API,这些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方法来解决他们的问题。如果没有,我将开始调查或联系他们以研究问题。