我正在尝试从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。
答案 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方法来解决他们的问题。如果没有,我将开始调查或联系他们以研究问题。