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);
InformationsquelleAutor bcmcfc | 2010-10-25
Schreibe einen Kommentar