Foros del Web » Programando para Internet » PHP »

Formatear respuesta consumo wsdl via curl

Estas en el tema de Formatear respuesta consumo wsdl via curl en el foro de PHP en Foros del Web. Buenas tardes. estoy realizando el consumo de un wsdl via curl.... ya el consumo funciona.. .El problema que tengo es que me devuelve un string ...
  #1 (permalink)  
Antiguo 21/06/2016, 10:53
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Formatear respuesta consumo wsdl via curl

Buenas tardes.

estoy realizando el consumo de un wsdl via curl.... ya el consumo funciona.. .El problema que tengo es que me devuelve un string con toda la información sin formatear, como se ve a continuación.

Estuve intentando leerlo como XML, convertirlo en json pero no me lo entiende... existe alguna forma facil de formatearlo gracias????

Código:
string(3652) "<?xml version="1.0" encoding="UTF-8"?><SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://www.sugarcrm.com/sugarcrm"><SOAP-ENV:Body><ns1:loginResponse xmlns:ns1="http://www.sugarcrm.com/sugarcrm"><return xsi:type="tns:entry_value"><id xsi:type="xsd:string">ithm9vjf5u5ldfqh9uuq7k5j7t0</id><module_name xsi:type="xsd:string">Users</module_name><name_value_list xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:name_value[13]"><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_id</name><value xsi:type="xsd:string">c47ca23d-58e8-3fbd-fbe7-5761c5795fb7</value></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_name</name><value xsi:type="xsd:string">pruebas</value></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_language</name><value xsi:type="xsd:string">es_ES</value></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_currency_id</name><value xsi:type="xsd:string">-99</value></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_is_admin</name><value xsi:type="xsd:string"></value></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_default_team_id</name><value xsi:nil="true" xsi:type="xsd:string"/></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_default_dateformat</name><value xsi:type="xsd:string">m/d/Y</value></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_default_timeformat</name><value xsi:type="xsd:string">h:ia</value></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_number_seperator</name><value xsi:type="xsd:string">,</value></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_decimal_seperator</name><value xsi:type="xsd:string">.</value></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">mobile_max_list_entries</name><value xsi:nil="true" xsi:type="xsd:string"/></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">mobile_max_subpanel_entries</name><value xsi:nil="true" xsi:type="xsd:string"/></item><item xsi:type="tns:name_value"><name xsi:type="xsd:string">user_currency_name</name><value xsi:type="xsd:string">US Dollars</value></item></name_value_list></return></ns1:loginResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>"
  #2 (permalink)  
Antiguo 21/06/2016, 17:44
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: Formatear respuesta consumo wsdl via curl

Bueno sin código, sin definición del wsdl y sin documentación del wsdl esta dificil ayudar pero para mi no estas consumiendo el wsdl(Web Services Description Language), solo mostrando su contenido. Ademas en mi experiencia, un wsdl se consume con soapclient, ya que un curl es para ws tipo rest.

Última edición por abrahamhs; 21/06/2016 a las 18:02
  #3 (permalink)  
Antiguo 22/06/2016, 07:39
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: Formatear respuesta consumo wsdl via curl

Buenas tardes abraham

Esta es la documentacion del wsdl

http://support.sugarcrm.com/Document...d_Calls/login/


Y si estoy de acuerdo con soapclient, nusoap o similar se debería hacer el consumo pero no se puede por restricciones de la App... ese soap que coloque es el soap de respuesta... pero no e logrado convertirlo o interpretarlo para obtener la info que necesito me puede colaborar gracias!!!!
  #4 (permalink)  
Antiguo 22/06/2016, 09:06
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: Formatear respuesta consumo wsdl via curl

Ahorita, me dejaron mucha chamba, no puedo revisar tu documentación, pero si te puedo dejar esta info (espero desocuparme para ayudarte mas al rato):
Como se consume un WebService SOAP:
Código PHP:
Ver original
  1. $WebService= new SoapClient("http://localhost:9019/ClsWaybill.svc?wsdl",
  2.                     array('trace' => 1,'soap_version' => SOAP_1_1));
  3. $arreglo=array('parametro1'=>$parametro1,'parametro2'=>$parametro2, ...);//PuedenSerVarios
  4. $respuesta = $WebService->__soapCall('NombreMetodo',array($arreglo));
  5. var_dump($respuesta);
Tambien te recomiendo revisar esta url, que tal vez te aclare dudas.
Espero poder apoyarte mas al rato si es que aún tienes dudas. Tambien quiero preguntarte ¿Que metodo vas a utilizar del WS? esto es para ir directo sobre ese metodo a su documentacion.

Si quieres consumir un WS REST, ese es el caso cuando se usa cURL y se hace así:
Código PHP:
Ver original
  1. $url="http://localhost:8080/JavaWebServiceServerCRUDRestful/restful/empleados/xml/listarempleados";
  2. $ch = curl_init($url);
  3. curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
  4. //curl_setopt($ch,CURLOPT_HTTPHEADER,array ("Content-Type: text/xml; charset=utf-8"));
  5. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  6. $respuesta = curl_exec($ch);  
  7. $xmlDoc=simplexml_load_string($respuesta);
  8. //$clientes=json_decode($respuesta);

Despues solo hay que analizar la respuesta dependiendo de lo que se quiera hacer. Usar xml o json depende de lo que te contesta el WS.
Saludos

Última edición por abrahamhs; 22/06/2016 a las 09:13
  #5 (permalink)  
Antiguo 22/06/2016, 10:03
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: Formatear respuesta consumo wsdl via curl

He revisado un poco tu documentación y creo que debería ser así:

Cita:
$WebService= new SoapClient("http://localhost:url?wsdl", array('trace' => 1,'soap_version' => SOAP_1_1));
$login_parameters=aqui viene como definir esta variable
$respuesta = $WebService->__soapCall('login',$login_parameters);
var_dump($respuesta);
y obvio pon la url correcta.
Saludos
  #6 (permalink)  
Antiguo 22/06/2016, 16:48
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Respuesta: Formatear respuesta consumo wsdl via curl

Gracias Abraham por todos tus comentarios aunque creo que no leiste con detenimiento mi comentario... Yo se hacerlo con SoapClient con Nusoap, etc.... el problema era que por limitaciones técnicas la única forma en que estaba funcionando el consumo era por curl.... pero bueno ya logre hacerlo con zend framework.. .dejo la solución por si a alguien en algun momento le llega servir... es bastante sencillo

Código:
$serviceArgs = array();
$soapClient = new \Zend\Soap\Client($this->wsurl);
$soapClient->setSoapVersion(SOAP_1_1);
$soapResponse = $soapClient->call("login", $serviceArgs);

Etiquetas: consumo, curl, formatear, respuesta, wsdl
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:46.