SOAP Problem mit Parameter?

Malaxo

Erfahrenes Mitglied
Ich habe folgendes PHP Script
PHP:
<?php
$soapURL = "http://....?wsdl" ;
$soapParameters = Array('login' => "LOGINNAME", 'password' => "PASSWORD") ;
$soapFunction = "GetByID" ;
$soapFunctionParameters = Array('chid' => 'CH12345678901') ;
$soapClient = new SoapClient($soapURL, $soapParameters);

$soapResult = $soapClient->__soapCall($soapFunction, $soapFunctionParameters) ;

if(is_array($soapResult) && isset($soapResult['getByCHidDetailledResponse'])) {
    echo $soapResult;
    echo "blub";
} else {
    echo "Unexpected soapResult for {$soapFunction}: ".print_r($soapResult, TRUE);
}
?>

Bekomme diese Fehler:
Code:
stdClass Object ( [errors] => stdClass Object ( [error] => stdClass Object ( [ code ] => 202 [message] => The chid is invalid, it must follow either the CH-###.#.###.###-# or CH########### pattern ) ) )

Pattern stimmt doch oder nicht? was mach ich da falsch?
 
sieht eigentlich soweit gut aus.
schon mal versucht die Ausgabe der Parameter zurückzugeben welche angekommen sind?
 
Aber die Fehlermeldung ist doch eindeutig:

Array('chid' => 'CH12345678901') ; ist falsch. Vielleicht ist die CHID (was auch immer das ist) an sich falsch.
 
Ich hab es leider immer noch nicht hin bekommen, kann mir da jemand helfen mit dem Link im Post zuvor?
 
Ich kann in dieser Schnittstellenbeschreibung die von dir verwendete Funktion "GetByID" nicht finden.
 
Danke für den Hinweis, bekomme aber noch die gleiche Fehlermeldung:
PHP:
Unexpected soapResult for GetByCHidDetailled: stdClass Object ( [errors] => stdClass Object ( [error] => stdClass Object ( [ code ] => 202 [message] => The chid is invalid, it must follow either the CH-###.#.###.###-# or CH########### pattern ) ) )
Mit: $soapFunction = "GetByCHidDetailled" ;
 
Support hat mir nur Bestätigt, dass das System einwandfrei funktioniert. Er kann mir nicht weiter helfen.
Konnte das Problem aber nun lösen:

So klappt es:
PHP:
$soapResult = $soapClient->GetByCHidDetailled(array($param => $input));

Anstatt
PHP:
$soapResult = $soapClient->__soapCall($soapFunction, $soapFunctionParameters) ;

Also rufe ich die Funktion direkt auf ohne "_soapCall" und muss nur noch die Parameter übergeben.

Ist das SOAP konform? Oder habe ich da was nicht ganz verstanden?
 
Im Grunde macht da Soap auch nichts anderes wie über "__call($func, $params){}" wenn du die Funktion direkt aufrufst. Vielleicht ist die Parameterübergabe ein wenig anders.
 
Zurück