Pregunta

Hola estoy teniendo problemas para enviar arreglos, estructuras y arrays de estructuras de PHP a un servidor ASP.NET de SOAP ...

Alguien tiene una sollution para esto? He buscado en Google durante días y cualquier sollution trabajado para mí. Perphaps estoy olvidando algo ...

Hay ejemplos de mi código:

$client = new SoapClient($options);

$pCriteria = new stdClass();
$pCriteria->type=1;
$pCriteria->capacity=4;

//Test 1 (fail):
$resp = $client->GetRooms(array("pCriteria"=>$pCriteria));

//Test 2 (fail):
$resp = $client->GetRooms(array("pCriteria"=>new SoapVar($pCriteria, SOAP_ENC_OBJECT, "TCriteria", "http://www.w3.org/2001/XMLSchema")));

print_r($resp);

No sé cómo funciones de código que requieren una serie de TCriteria (TCriteria [], tipo TCriteria_Array) o bien ... he intentado enviar la matriz prima, un SoapVar con SOAP_ENC_ARRAY codificación y tipo TCriteria_Array, .. . pero no funciona (el servidor SOAP convierte encuentra no disponible y las necesidades que se reinicie).

He intentado crear clases para los complejos tipos también, en lugar de stdClass, pero no funciona.

No sé dónde está el problema. Los administradores del servidor no me pueden ayudar y no he encontrado ninguna sollution a través de Internet. Soy un poco jeje desesperada.

Puede usted ayudarme por favor? ¿Puede proporcionar muestras de código con los tres casos (matriz de datos simple, conjunto de estructura y estructura)? Gracias!

¿Fue útil?

Solución

I tenía una situación similar con un PHP Jabón cliente comunicarse con un .NET Jabón Server utilizando WSDL 2.0. Aquí hay una cosa que descubrí: Al pasar la información al servidor, se debe definir explícitamente la variable como un objeto SoapVar. Así que en su ejemplo anterior, cambiarlo a:

$pCriteria->type = new SoapVar(1, XSD_INT, 'xsd:int');

Al pasar una matriz es similar, essentialy se pasa una matriz de SoapVars:

$pCriteria->type = array(new SoapVar(1, XSD_INT, 'xsd:int'), new SoapVar(2, XSD_INT, 'xsd:int', new SoapVar(3, XSD_INT, 'xsd:int'));`enter code here`

Además, podrá utilizar las funciones incorporadas de la SoapClient obtener alguna información adicional sobre posibles errores.

$client->__getLastRequest() //To display the XML that you sent to the server
$client->__getLastResponse() //to display the XML that is sent in response to your request

Si usted puede conseguir una copia del formato WSDL espera puede utilizar la respuesta de los comandos anteriores para determinar lo que está mal. Por lo general, se puede acceder a ella desde la URL que se pasa a la SoapClient. Así, por ejemplo, si la URL de servicios WSDL es http://example.com/webservices/wvrgroupservice .asmx? WSDL , introduzca http://example.com/webservices/wvrgroupservice.asmx para ver las funciones y XML esperada desde ese servidor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top