Foros del Web » Programando para Internet » PHP »

Consumir Web Service Soap con PHP

Estas en el tema de Consumir Web Service Soap con PHP en el foro de PHP en Foros del Web. Buenas.., amigos del foro. necesito su ayuda.! un proveedor de gps nos dispuso un WS para ser consumido a través de nuestro hosting. lo unico ...
  #1 (permalink)  
Antiguo 26/10/2015, 15:17
 
Fecha de Ingreso: octubre-2015
Ubicación: Santiago
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Consumir Web Service Soap con PHP

Buenas.., amigos del foro. necesito su ayuda.!
un proveedor de gps nos dispuso un WS para ser consumido a través de nuestro hosting.
lo unico que he podido hacer es consumir el WS con un ajax que me encontre en la web al cual lo adapte y logre rescatar algunos datos. La problematica que tengo es que tengo algunos problemas de Access-control-Expose-Headers

adjunto mi codigo, la verdad necesito si alguien me puede ayudar a consumir este WS solo con PHP y alguna libreria facil de entender.
saludos!

Código PHP:
Ver original
  1. <?php
  2. include "../config.php";
  3. ?>
  4.  
  5.  
  6. <html xmlns="http://www.w3.org/1999/xhtml">
  7.  <head>
  8.     <title>Calling Web Service from jQuery</title>
  9.    
  10.    
  11.      <style>
  12.       html, body {
  13.         height: 100%;
  14.         margin: 0;
  15.         padding: 0;
  16.       }
  17.       #map {
  18.         height: 100%;
  19.       }
  20.     </style>
  21.  
  22.     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
  23.     <script src="https://maps.googleapis.com/maps/api/js?signed_in=true"></script>
  24.    
  25.     <?php
  26.   $variablephp = "PHJlcXVlc3Q+PGxvZ2luPmFzZXNvcmlhczwvbG9naW4+DQo8cGFzc3dvcmQ+NDE2c2VydmljaW9zPC9wYXNzd29yZD4NCjxwaHlzaWQ+MzU3NjY2MDUxMzM3NTE0PC9waHlzaWQ+PC9yZXF1ZXN0Pg==";
  27.     ?>
  28.  
  29.     <script type="text/javascript">
  30.    
  31.    
  32.     var variablejs = "<?php echo $variablephp; ?>" ;
  33.    
  34.    
  35.         $(document).ready(function () {
  36.                      
  37.                 var wsUrl = "http://416.fleetport.net/Monitoreo.asmx";
  38.  
  39.                 var l1 = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"><soapenv:Header/><soapenv:Body><tem:getLastPositionById><tem:request>' + variablejs +'</tem:request></tem:getLastPositionById></soapenv:Body></soapenv:Envelope>';
  40.                
  41.  
  42.                 var soapRequest =l1  ;
  43.  
  44.                $.ajax({
  45.   type: "POST",                    
  46.   url: wsUrl,
  47.   contentType: "text/xml",
  48.   dataType: "xml",
  49.   crossDomain: true,
  50.   data: soapRequest,
  51.   success: processSuccess,
  52.   error: processError
  53. });
  54.         });
  55.        
  56.        function processSuccess(data, status, req) {
  57.             if (status == "success")
  58.            // $("#response").text($(req.responseXML).find("getLastPositionByIdResult").text());
  59.  
  60.             var value = ($(req.responseXML).find("patente").text());
  61.            
  62.                 $("#patente").val(value);
  63.                 $("#patente2").val(value);
  64.  
  65.            lat = ($(req.responseXML).find("latitud").text());
  66.            
  67.                 $("#latitud").val(lat);
  68.  
  69.            lng = ($(req.responseXML).find("longitud").text());
  70.            
  71.                 $("#longitud").val(lng);
  72.                
  73.             var value = ($(req.responseXML).find("serieGSM").text());
  74.            
  75.             $("#imei").val(value);
  76.            
  77.            
  78.             var value = ($(req.responseXML).find("calle").text());
  79.            
  80.             $("#calle2").val(value);
  81.                
  82.                
  83.                 var value = ($(req.responseXML).find("velocidad").text());
  84.            
  85.             $("#velocidad").val(value);
  86.    
  87.             var value = ($(req.responseXML).find("fechaHoraSistema").text());
  88.            
  89.             $("#fecha").val(value);
  90.  
  91.         }
  92.  
  93.   function processError(data, status, req) {
  94.             alert(req.responseText + " " + status);
  95.         }
  96.  
  97.     </script>
  98.  
  99. </head>
  100. <body>
  101.  
  102.     <input id="btnCallWebService" value="Call web service" type="button" />
  103.    
  104.  <form method="post" action="../registro_GPS.php">
  105. <input type="text" id="patente" name="patente" value=""/>
  106. <br>
  107. <input type="text" id="latitud" name="latitud"value=""/>
  108. <br>
  109. <input type="text" id="longitud" name="longitud" value=""/>
  110. <br>
  111. <input type="text" id="velocidad" name="velocidad"value=""/>
  112. <br>
  113. <input type="text" id="calle2" name="calle2" value=""/>
  114. <br>
  115. <input type="text" id="imei" name="imei"value=""/>
  116. <br>
  117. <input type="text" id="fecha"name="fecha" value=""/>
  118. <button type="submit" class="btn btn-primary">Enviar</button>
  119. </form>
  120.  
  121.   <form id="form1" method="post" action="gpsUNO.php" role="form">
  122.     <input type="text" id="patente2" name="patente2" value=""/>
  123. <button type="submit" class="btn btn-primary">Ver MAPA</button>
  124.     </form>
  125.  
  126.        
  127.                  <?php
  128.                 $patente = $_POST['patente2'];               
  129.                  echo  $patente;                               
  130.                     $db = new MySQL();
  131.                     $consulta = $db->consulta("select * from GPS where patente = '$patente'" );                                    
  132.  
  133.                     if($db->num_rows($consulta)>0){
  134.                     while($resultados3 = $db->fetch_array($consulta)){
  135.                             ?>     
  136.                                 <center>
  137.                          <iframe
  138.                     width="90%"
  139.                     height="400px"
  140.                     frameborder="0" style="border:0"
  141.                     src="https://www.google.com/maps/embed/v1/directions?key=AIzaSyBl7XAviMyBkMHVHh54ab3lePOiqJr596c
  142.                     &origin=<?php echo $resultados3['latitud']?>,<?php echo $resultados3['longitud']?>
  143.                     &destination=<?php echo $resultados2['comuna']?>,<?php echo $resultados2['calle']?>,<?php echo $resultados2['numero']?>, chile         
  144.                     " >
  145.                         </iframe>      
  146.                                 </center>                  
  147.                           <?php
  148.                         }
  149.                     }
  150.                     ?> 
  151.                  
  152.    
  153.    
  154. </body>
  155. </html>
  #2 (permalink)  
Antiguo 26/10/2015, 15:20
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Consumir Web Service Soap con PHP

A ver, si la mayor parte del código es Javascript, ¿por qué crees que tu duda corresponde al foro de PHP?

¿O los problemas de "Access-control-Expose-Headers" provienen del código PHP?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/10/2015, 15:28
 
Fecha de Ingreso: octubre-2015
Ubicación: Santiago
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Respuesta: Consumir Web Service Soap con PHP

Cita:
Iniciado por pateketrueke Ver Mensaje
A ver, si la mayor parte del código es Javascript, ¿por qué crees que tu duda corresponde al foro de PHP?

¿O los problemas de "Access-control-Expose-Headers" provienen del código PHP?
Si Tienes razon, pero necesito alguien que me pueda guiar, para consumir este codigo con php, lei por ahi que Jquery, por razones de segurdad, no admite esas peticiones, y para que me funque ese codigo debo instalar un complemento en chrome
saludos!
  #4 (permalink)  
Antiguo 26/10/2015, 15:42
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Consumir Web Service Soap con PHP

Ahora ya se entiende mejor.

Primero te sugiero investigar acerca de las librerías que tiene PHP para SOAP: php soap

Revisa ejemplos, cuando te encuentres con algún problema nos cuentas.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 26/10/2015, 16:13
 
Fecha de Ingreso: octubre-2015
Ubicación: Santiago
Mensajes: 3
Antigüedad: 9 años
Puntos: 0
Respuesta: Consumir Web Service Soap con PHP

Lo adapte a este codigo, pero como puedo ver los datos?


Código PHP:
Ver original
  1. <?php
  2.  
  3.  
  4. //Creas el cliente soap con la ruta del wsdl y el endpoint (lo demás es opcional)
  5. //El endpoint suele venir en el wsdl (no siempre), en caso de no venir necesitas 'location'
  6.  
  7.  $variablephp = "PHJlcXVlc3Q+PGxvZ2luPmFzZXNvcmlhczwvbG9naW4+DQo8cGFzc3dvcmQ+NDE2c2VydmljaW9zPC9wYXNzd29yZD4NCjxwaHlzaWQ+MzU3NjY2MDUxMzM3NTE0PC9waHlzaWQ+PC9yZXF1ZXN0Pg==";
  8.  
  9. $var  = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"><soapenv:Header/><soapenv:Body><tem:getLastPositionById><tem:request>' .$variableph.'</tem:request></tem:getLastPositionById></soapenv:Body></soapenv:Envelope>';
  10.                
  11. $soap = new SoapClient('http://416.fleetport.net/Monitoreo.asmx?WSDL',array('location'=>$var,'trace'=>true,'exceptions'=>false));
  12.  
  13. //Luego
  14. //Creas un array con la relación campo=>valor, en la documentación tienen que venir (se puede sacar también del wsdl)
  15. $array=array("getLastPositionById"=>$var);
  16.  
  17. //Y luego lanzas el comando y tendrás un array como respuesta
  18. $array_respuesta = $soap->getLastPositionById("getLastPositionById",$array);
  19. //$array_respuesta = $soap->comando($usuario,....); Es lo mismo pero escrito diferente  
  20.  
  21.  
  22. ?>
  #6 (permalink)  
Antiguo 26/10/2015, 16:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Consumir Web Service Soap con PHP

Puedes usar var_dump() para examinar la variable que necesites, consulta el manual.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: consumir, jquery, soap, 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 12:51.