Problema con SOAP y PHP

Iniciado por WHK, 17 Julio 2012, 23:48 PM

0 Miembros y 1 Visitante están viendo este tema.

WHK

Alguien sabe que rechingados sucede con este código?

Código (php) [Seleccionar]
ini_set('soap.wsdl_cache_enabled', 0);
$client = new SoapClient('http://www.test/test?wsdl', array(
'soap_version' => SOAP_1_2,
'cache_wsdl' => WSDL_CACHE_NONE,
//'exceptions' => 0
));
$result = $client->ValidaRut(array(
'rut' => 10000000,
'dv' => '3',
'cup' => '',
'ipserver' => '',
'ipcliente' => ''
));


Esto me daba cuando le ponía SOAP_1_1:
CitarFatal error: Uncaught SoapFault exception: [HTTP] Cannot process the message because the content type 'text/xml; charset=utf-8' was not the expected type 'application/soap+xml; charset=utf-8'. in /home/test.php:1 Stack trace: #0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'http://www...', 'http://www...', 1, 0) #1 /home/test.php(1): SoapClient->__call('test', Array) #2 /home/test.php(1): SoapClient->ValidaRut(Array) #3 /home/test.php on line 67

Pero al cambiar a la 1_2 me sale igual un error:
CitarFatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers in ...

Cambié las rutas pero el código es ese. Que podrá ser? Instalé SOAP con easyapache desde WHM, luego recompilé php con --soap-enabled y la clase me funciona pero hay algo que al parecer no anda.

Por lo que averigué el primer errror era causado porque el rotocolo 1.1 enviaba el contenido via text/xml pero desde la 2.2 es application/soap+xml, pero bueno, cambié la version del protocolo a 1.2 pero ahora me sale un error en el header :-/ que podré hacer?

Gracias :)

PD: Acá les dejo un DUMP para mayor info:
print_r($client->__getFunctions());
Array
(
   [1] => ValidaRutResponse ValidaRut(ValidaRut $parameters)
)

print_r($client->__getTypes());
[0] => struct ValidaRut {
double rut;
string dv;
string cup;
string ipserver;
string ipcliente;
}
   [1] => struct ValidaRutResponse {
boolean ValidaRutResult;
}
   [4] => int char
   [5] => duration duration
   [6] => string guid
)

WHK

Encontré el problema, le hize print_r($client) y pude ver la última petición por parte de la librería hacia el servidor y al intentar hacerlo desde la consola con netcat me di cuenta que era el servidor el que no enviaba correctamente las cabeceras.

Saludos.