Logotipo IDQ Web

Por Isaac Díez -- 11/03/2016

Consumir Web Service con PHP.


Para poder consumir cualquier Web Service con PHP debemos usar una librería llamada NU SOAP, te la puedes descargar aquí. A continuación puedes ver el código en PHP como ejemplo del consumo de un Web Service en el cual proporcionada una localidad nos devolvía la distancia en metros desde nuestra ubicación.

Este es un ejemplo sobre un Web Service creado en LOCAL, creo que el código al estar comentado esta bastante claro que habría que sustituir para usar CUALQUIER web service.

 

8 respuestas a “Consumir Web Service con PHP”

  1. Leo dice:

    Y en caso de que necesite autenticarme al WS
    como quedaría el código?

  2. Luis Marquez dice:

    Hola estoy tratando de consumir un Web Service hecho en .NET C# desde PHP, pero me da este error:
    [faultcode] => soap:Client
    [faultstring] => System.Web.Services.Protocols.SoapException: El servidor no reconoció el valor del encabezado HTTP SOAPAction: .
    en System.Web.Services.Protocols.Soap11ServerProtocolHelper.RouteRequest()
    en System.Web.Services.Protocols.SoapServerProtocol.RouteRequest(SoapServerMessage message)
    en System.Web.Services.Protocols.SoapServerProtocol.Initialize()
    en System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)
    [detail] =>

    Este es mi codigo, es muy simple:

    $_POST[‘txtCodigo’]);
    $codigo_personal = array(“codigo_personal” => $_POST[‘txtCodigo’]);
    $consulta = $ws->call(“data_maestro”, $_POST[‘txtCodigo’]);
    $resultado = $ws->return;

    echo “

    ”;
    }

    ?>

    Invocar

  3. Isaac Díez dice:

    Hola Luis,
    He mirado por ahí posibles soluciones a tu problema, con lo que me comentas. Quizás probando algo como lo que comentan aquí se solucione:
    https://social.msdn.microsoft.com/Forums/es-ES/d72ecf96-6e23-4691-bba3-4fd8c1bb30a1/error-al-consumir-webservises?forum=netfxwebes
    Si es así por favor dime como se soluciono sino miramos otras opciones.
    Ya me dirás. Un saludo y feliz navidad y prospero 2018.

  4. Daniel Rios dice:

    En caso de necesitar utilizar un usuario y contraseña que me han entregado para poder utilizar el webservice, ¿como podrian ser el codigo? gracias

    • Isaac Díez dice:

      Hola Daniel,
      En el caso de tener que un WS al cual has de pasar un “user” y “pass”, constantemente en cada petición para ser consumido. (entiendo que esa es tu situación)
      Deberías de pasarlo en los parámetros, en el ejemplo superior:

      $parameters=array( "user"=>$usuario,"pass"=>$password,"localidad"=>"toreno");

      Siendo $usuario y $password las claves que nos pasan.
      Así aunque debería de funcionar, es muy inseguro. Lo que yo haría es crear una clase con unas propiedades privadas usuario y password. Y llamar a esa clase.
      Algo similar a esto que responden en Stackoverflow Respuesta WEb Service Protected.
      Espero esto te haya orientado hacia una solución a tu necesidad.

  5. JOSE LUIS LOZANO VELARDE dice:

    Hola, tengo una confusión, necesito precisamente copiar un texto y copiarlo para que se convierta en base 64. Pero mi problema es como indicar que quiero consumir ese servicio en especifico, ya que esa pagina tiene mas servicios que a mi no me interesan? Te pido me ayudes y gracias

    • Isaac Díez dice:

      Hola José Luis, el propio servicio en la página debería explicar como utilizarse. Pero si es para pasar un texto en base 60 puedes usar en PHP esta función Función Base64. No obstante si me muestras la web que ofrece ese webservice lo miro a ver si te puedo ayudar.
      Un saludo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *