SOAP-Fehler: Objekt nicht auf eine Instanz eines Objekts
Fand ich diese Frage hier:
PHP-Soap-Thema: Server konnte die Anforderung nicht verarbeiten. ---> der Objektverweis wurde nicht auf eine Instanz eines Objekts
Ich habe ein ähnliches Problem, nur das WSDL-ist privat, so dass ich dachte, ich würde versuchen, ein basic-timezone-SOAP-Client arbeiten.
Die Lösung in der anderen Frage ist nicht möglich für mich, um mit dem privaten WSDL.
$response = $client->getTimeZoneTime(array('timezone'=>'ZULU'));
Wirklich das, was ich brauche, ist eine Möglichkeit der Einnahme eines mehrdimensionalen PHP-array und legt es in die SOAP-XML-Dokument, ohne es verrückt und Herstellung von Sachen wie, Sie für dieses Beispiel dieses:-
<key>GetTimeZoneTime</key>
<item>ZULU</item>
Hier ist meine PHP:
try {
$WSDL = 'http://www.nanonull.com/TimeService/TimeService.asmx?WSDL';
$client = new SoapClient($WSDL,
array(
"trace" => 1,
"exceptions" => 1,
"soap_version" => SOAP_1_1
));
$xml = '<GetTimeZoneTime><timezone>ZULU</timezone></GetTimeZoneTime>';
$xmlvar = new SoapVar(
$xml,
XSD_ANYXML
);
$response = $client->getTimeZoneTime($xmlvar);
echo "<pre>\n";
echo "Request :\n".htmlspecialchars($client->__getLastRequest()) ."\n";
echo "Response:\n".htmlspecialchars($client->__getLastResponse())."\n";
echo "</pre>";
} catch (SoapFault $exception) {
echo "<pre>\n";
echo "Request :\n".htmlspecialchars($client->__getLastRequest()) ."\n";
echo "Response:\n".htmlspecialchars($client->__getLastResponse())."\n";
echo $exception;
echo "</pre>";
}
Dies ist die Anforderung, die es produziert:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.Nanonull.com/TimeService/">
<SOAP-ENV:Body>
<GetTimeZoneTime>
<timezone>ZULU</timezone>
</GetTimeZoneTime>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Und der SOAP-Fault ist:
Server was unable to process request. ---> Object reference not set to an instance of an object.
Was ist der richtige Weg, aus einem mehrdimensionalen PHP-array in das geeignete format für eine SOAP-Anforderung?
Was macht der SOAP-fault zurückgegeben eigentlich bedeuten?
Edit: Nach einiger Sucherei Stelle ich immer dachte, ich würde versuchen, den Ansatz der Schaffung einer PHP-Klasse, die Spiegel, die Variablen auf dem server. Dies funktioniert auch nicht.
class TimeZone {
public function __construct ()
{
$this->timezone = 'ZULU';
}
}
$WSDL = 'http://www.nanonull.com/TimeService/TimeService.asmx?WSDL';
$client = new SoapClient($WSDL,
array(
"trace" => 1,
"exceptions" => 1,
"soap_version" => SOAP_1_1
));
$xmlvar = new SoapVar(new TimeZone(), SOAP_ENC_OBJECT, "TimeZone");
$response = $client->getTimeZoneTime($xmlvar);
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für die Zeitzone ein, indem die classmap-parameter es zu arbeiten:
Für das Haupt-problem das ich habe, ist es garantiert eine neue Frage.
Ich kann mich irren, aber ich nehme an, die Bedeutung der Fehler-Nachricht werden zwei Ziele verfolgt: