PHP - Almacenar datos por medio de un web service

   
Vista:

Almacenar datos por medio de un web service

Publicado por David (38 intervenciones) el 22/08/2014 15:08:16
Buen dia,

Tengo que desarrollar un codigo en php que me capture unos datos y por medio de un webservice enviarlo al servidor de mi proveedor, este cuando reciba los datos los almacena y me retorna un numero de guia.
Mi pregunta es: como debo enviar los datos al web service? por un insert into? porque he consumido los servicios web a manera de consulta (ejemplo: saber el clima de una ciudad) pero no he podido encontrar la forma de enviarlos para que sean almacenados en el proveedor.

Agradezco me puedan ayudar con un sencillo ejemplo (nombre, apellidos, identificacion) y que me retorne que fue registrado satisfactoriamente.

Mil gracias

David C.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Vainas

Almacenar datos por medio de un web service

Publicado por Vainas (254 intervenciones) el 22/08/2014 19:03:34
Buenas:

No he usado mucho web services pero no creo que tengas que usar un INSERT INTO. la tabla esta en el lado del servidor y tu solo tienes que consumir metodos.

Si asi lo haces siempre:

1
2
$client = new SoapClient("some.wsdl");
$result = $client->getTime();


Solo tendras que pasarle unos parametros al metodo y esperar su respuesta.
1
2
3
$params = array ("uno", "dos", "tres");
$client = new SoapClient("some.wsdl");
$result = $client->getTime($params);

Aqui mi duda es que el Servidor te tiene que dar de alguna forma como pasarle los parametros (strings, int, array, ...).


Me voy a buscar un ejemplo para que lo veas.

Espero que sirva. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Almacenar datos por medio de un web service

Publicado por David Contreras (38 intervenciones) el 22/08/2014 19:21:56
Mil gracias por responder,

te cuento el caso en escpecifico, debo capturar los datos de una persona que quiere comprar algo, cuando esta lo haga debo enviar los mismos datos de registro a la empresa trasnportadora para que esta los guarde y me retorne el numero de guia.
Con el ejemplo que me brindas podre hacer esto? Porque he realizado ejemplos del clima o de una calculadora pero en estos solo me devuelven valores mas no los almacenan.

Agradezco mucho tu ayuda.

Saludos :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

Almacenar datos por medio de un web service

Publicado por Vainas (254 intervenciones) el 22/08/2014 19:57:58
Si claro que lo puedes hacer. Yo aqui sigo viendo el problema es que te tienen que decir como se envian los datos al servicio web, es decir, te tienen que decir algo asi como:

la funcion nuevoPedido recibe los siguientes parametros: un string con el nombre, un array .... entiendes no?

Luego tambien te tienen que decir si para conectarse al servicio web se necesita alguna autentificacion (se que se puede usar https pero no se como ademas de autentificar quien hace la peticion). pero esto que lo responda alguien mas en el foro.

Mira este ejemplo http://solaajayi.wordpress.com/2013/12/04/beginners-guide-to-consuming-a-web-service-using-php-soapclient/

Hay cosas interesantes:

1.
1
$client = new SoapClient($url);

Una de las primeras cosas que tienes que saber es donde esta la url del WB.

2.
1
2
$fcs = $client->__getFunctions();
print_r($fcs);

puedes imprimir antes cuales son las funciones de ese WB que las obtienes con el metodo __getFunctions.

El enlace pone como ejemplo a la funcion GetWeather (obtener el tiempo, pero de donde?, pues habra que decircelo no?).
Dice que hay que pasarle un $parameters de tipo GetWeather... vale y quien define este objeto de tipo GetWeather? pues el WB.

Hay que ir al archivo WSDL que te da el servidor y buscar donde se define el objeto (y yo lo llamo asi y no se es correcto) GetWeather....

1
2
3
4
5
6
7
8
<s:element name=”GetWeather”>
<s:complexType>
<s:sequence>
<s:element minOccurs=”0″ maxOccurs=”1″ name=”CityName” type=”s:string“/>
<s:element minOccurs=”0″ maxOccurs=”1″ name=”CountryName” type=”s:string“/>
</s:sequence>
</s:complexType>
</s:element>

Aqui esta el objeto y dice hay que pasarle CityName y CountryName. aqui es donde yo tengo mis dudas por que ellos luego hacen esto:

1
$res = $client->GetWeather(array(‘CityName’ => ‘Lagos’, ‘CountryName’ => ‘Nigeria’));


Vale y en que momento les han dicho a ellos que GetWeather era un array? (quiero pensar que en un WB no se pueden pasar en realidad objetos ya que un objeto involucra metodos y eso ya no cabe dentro de la definicion de un WB ya que deja de ser general).

Luego hay que mirar la respuesta a esto del servidor que sera otro objeto o array....

Es un poco complicado asi que es mejor muchas veces que la propia empresa te de documentacion del WB. o eso o alguien nos explique si existe alguna forma de sacar estos datos mas rapidamente.

Espero que sirva. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Almacenar datos por medio de un web service

Publicado por David Contreras (38 intervenciones) el 22/08/2014 21:38:21
Muchas gracias por tu respuesta y dedicacion, voy a proceder con el desarrollo del codigo y cuando este listo y funcionando lo publicare para que sea del conocimiento de todos.

De nuevo mucas gracias. :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar