4 Stimmen

Wie man verhindert, dass der PHP SoapClient s1:char Argumente in der Anfrage in 0 oder 1 umwandelt

Der Soap-Client von PHP scheint Argumente vom Typ s1:char falsch zu behandeln, wenn er die Anfrage erstellt. Die Soap-API erfordert entweder 'Y' oder 'N', aber im Anfrage-XML erhalte ich '0'. (Das Übergeben von Bool true ergibt '1', aber das wird nicht als 'Y' akzeptiert).

Ich verwende PHP Version 5.3.8 mit dem nativen Soap-Client

Hier ist mein PHP

$this->soapClient = new SoapClient( $client->wsdl,
  array(
    'soap_version' => SOAP_1_2,
    'trace' => true
  )
);

$result = $this->soapClient->SomeSoapMethod(array(
  'sSessionKey'        => $sessionKey,
  // other string and int args that work fine here
  'cReturnNonSeats'    => 'Y' // API wants 'Y' or 'N'
));

Der relevante XML-Knoten in der Anfrage:

0

Und aus dem WSDL:

Gibt es eine Möglichkeit, ohne manuelle XML-Erstellung die Art und Weise zu kontrollieren, wie diese Argumente typisiert werden?

2voto

DavidNorth Punkte 450

Dies ist, wie ich es umgangen habe, obwohl ich gerne wüsste, warum SoapClient diese Zeichenfolge in eine Ganzzahl umwandelt.

Statt 'Y' in meinem Array von Parametern habe ich verwendet:

new SoapVar('Y', XSD_ANYTYPE)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X