私は石鹸を扱うことにあまり慣れていません。SOAP サーバーからデータを取得したかったのですが、問題があるようです (オブジェクト参照がオブジェクトのインスタンスに設定されていません)。ここに私のコードからのデバッグコード:
stdClass Object ( [GetSalesBannersResult] => stdClass Object ( [Result] => [Message] => Object reference not set to an instance of an object. [List] => stdClass Object ( ) ) )
Request :<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.ozsale.com.au/API/V2"><SOAP-ENV:Body><ns1:GetSalesBanners><ns1:saleCategoryID>40F80218-A9E1-43C4-96FF-4C046D192A21</ns1:saleCategoryID><ns1:getTopThree>true</ns1:getTopThree></ns1:GetSalesBanners></SOAP-ENV:Body></SOAP-ENV:Envelope>
Response:<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetSalesBannersResponse xmlns="http://ws.ozsale.com.au/API/V2"><GetSalesBannersResult><Result>false</Result><Message>Object reference not set to an instance of an object.</Message><List /></GetSalesBannersResult></GetSalesBannersResponse></soap:Body></soap:Envelope>
これまでのところ私のコードです:
<?php
// create a connection to the local host mono .NET pull back the wsdl to get the functions names
// and also the parameters and return values
$client = new SoapClient("http://www.ozsale.com.au/api/v2/api.asmx?WSDL",
array(
"trace" => 1, // enable trace to view what is happening
"exceptions" => 0, // disable exceptions
"cache_wsdl" => 0)
);
// get a response from the WSDL zend server function getQuote for the day monday
print_r($client->GetSalesBanners(array(
"saleCategoryID" => "40F80218-A9E1-43C4-96FF-4C046D192A21",
"getTopThree" =>"1"
))
);
//print_r($client);
// display what was sent to the server (the request)
echo "<p>Request :".htmlspecialchars($client->__getLastRequest()) ."</p>";
// display the response from the server
echo "<p>Response:".htmlspecialchars($client->__getLastResponse())."</p>";
?>
APIドキュメントはこちらhttp://www.ozsale.com.au/api/v2/api.asmx?op=GetSalesBanners
ここで何が間違っているかどうかを理解するのを誰でも助けることができます...
私の質問の新しい更新。ドキュメントAPIはここにあります http://www.ozsale.com.au/api/v2/api.asmx?op=GetPublicSalesBanners
次の情報を使用してデータを取得しようとしています。
'saleCategoryID' => '40F80218-A9E1-43C4-96FF-4C046D192A21',
'countryID'=> 'AS',
'languageID'=> 'EN',
'getTopThree' =>'1'
私のコードはここにあります:
<?php
// create a connection to the local host mono .NET pull back the wsdl to get the functions names
// and also the parameters and return values
$client = new SoapClient("http://www.ozsale.com.au/api/v2/api.asmx?WSDL",
array(
"trace" => 1, // enable trace to view what is happening
"exceptions" => 0, // disable exceptions
"cache_wsdl" => 0)
);
// get a response from the WSDL zend server function getQuote for the day monday
print_r($client->GetPublicSalesBanners(array(
'saleCategoryID' => '40F80218-A9E1-43C4-96FF-4C046D192A21',
'countryID'=> 'AS',
'languageID'=> 'EN',
'getTopThree' =>'1'
))
);
// display what was sent to the server (the request)
echo "<p>Request :".htmlspecialchars($client->__getLastRequest()) ."</p>";
// display the response from the server
echo "<p>Response:".htmlspecialchars($client->__getLastResponse())."</p>";
?>
そして、それがどのように機能するかを確認しようとすると、次のような出力になります。
SoapFault Object ( [message:protected] => Server was unable to process request. ---> There was an error generating the XML document. ---> <>f__AnonymousType2a`2[System.String,System.Object[]] cannot be serialized because it does not have a parameterless constructor. [string:Exception:private] => [code:protected] => 0 [file:protected] => /Users/resarahman/Documents/xampp/htdocs/testing/soap/test.php [line:protected] => 17 [trace:Exception:private] => Array ( [0] => Array ( [file] => /Users/resarahman/Documents/xampp/htdocs/testing/soap/test.php [line] => 17 [function] => __call [class] => SoapClient [type] => -> [args] => Array ( [0] => GetPublicSalesBanners [1] => Array ( [0] => Array ( [saleCategoryID] => 40F80218-A9E1-43C4-96FF-4C046D192A21 [countryID] => AS [languageID] => EN [getTopThree] => 1 ) ) ) ) [1] => Array ( [file] => /Users/resarahman/Documents/xampp/htdocs/testing/soap/test.php [line] => 17 [function] => GetPublicSalesBanners [class] => SoapClient [type] => -> [args] => Array ( [0] => Array ( [saleCategoryID] => 40F80218-A9E1-43C4-96FF-4C046D192A21 [countryID] => AS [languageID] => EN [getTopThree] => 1 ) ) ) ) [previous:Exception:private] => [faultstring] => Server was unable to process request. ---> There was an error generating the XML document. ---> <>f__AnonymousType2a`2[System.String,System.Object[]] cannot be serialized because it does not have a parameterless constructor. [faultcode] => soap:Server [detail] => )
Request :<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ws.ozsale.com.au/API/V2"><SOAP-ENV:Body><ns1:GetPublicSalesBanners><ns1:saleCategoryID>40F80218-A9E1-43C4-96FF-4C046D192A21</ns1:saleCategoryID><ns1:countryID>AS</ns1:countryID><ns1:languageID>EN</ns1:languageID><ns1:getTopThree>true</ns1:getTopThree></ns1:GetPublicSalesBanners></SOAP-ENV:Body></SOAP-ENV:Envelope>
Response:<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>Server was unable to process request. ---> There was an error generating the XML document. ---> <>f__AnonymousType2a`2[System.String,System.Object[]] cannot be serialized because it does not have a parameterless constructor.</faultstring><detail /></soap:Fault></soap:Body></soap:Envelope>
ここでなぜ、何が間違っているのですか?