2011-03-31 10 views
7

Estoy aprendiendo php/xml/json y todo lo demás por mi cuenta y estaba revisando API para ciertas cosas. Tienen documentación, pero todavía no entiendo cómo funciona la API. Te dan un enlace GET y clave de API, sé que se supone que debes poner la clave de API dentro del enlace de solicitud¿Cómo interactuar con las API web XML/JSON?

Como llamar en este enlace? ¿Y qué significa cuando te da una respuesta de muestra?

es la respuesta supone que vienen a cabo si recibiera la solicitud correcta?

Soy un poco clueluess?

Gracias

Respuesta

15

En PHP es posible que tenga algo como esto:

// EDIT: only need to use urlencode() on user supplied variables 
//$url = urlencode("http://xyz.com/api?apikey=foo&v1=bar&v2=baz"); 
$url = "http://xyz.com/api?apikey=foo&v1=bar&v2=baz"; 
$response = file_get_contents($url); 

El $response contendrá una cadena de cualquier xyz.com emite cuando se accedió $url (Es lo que se vería si ha visitado $url directamente).

Su próximo trabajo sería analizar $response en función de su estructura de datos (por ejemplo, XML, JSON, etc.) para que pueda ser utilizado por el resto de su código.

Hay varias bibliotecas de PHP para el análisis sintáctico XML o JSON. Personalmente, prefiero usar SimpleXMLElement y json_decode() que se incluye con PHP 5> = 5.2.0.

Dependiendo de la API, probablemente le enviará algún tipo de código de error/estructura de respuesta si no comprende la solicitud $url que podría verificar después de analizar la respuesta.

Si $response devuelve falso, entonces normalmente ha habido algún error comunicando con el $url.

Descubrí que una forma intuitiva de pensar en estas solicitudes XHR es que está pasando argumentos (GET parámetros) a una función (API URL). Y la respuesta de la API URL es como la declaración de retorno de una función.

ACTUALIZACIÓN:

ejemplo API para Groupon según lo sugerido por OP en los comentarios:

$apikey = "client_id=abcd1234567890"; 
$division = "division_id=chicago"; 
$url = "http://api.groupon.com/v2/deals?" . implode("&", array($apikey, $division)); 
$response = file_get_contents($url); 
$deals = json_decode($response, true); 

foreach($deals['deals'] as $deal){ 
    $format = 'Deal: <a href="%s">%s</a><br/>'; 
    echo sprintf($format, $deal['dealURL'], $deal['announcementTitle']); 
} 

El código anterior podría imprimir una lista de todos los títulos Deal y direcciones URL para el área de Chicago. Si nos fijamos en las Sample JSON Response secciones en la página de la API de Groupon, que le dará toda la estructura de datos que se asigna a la matriz asociativa $deals.

Si el usuario proporciona alguno de los parámetros GET de la API (por ejemplo, desde un formulario web), querrá hacer algo como $division = "division_id=" . urlencode($user_input);.

+1

Y se puede romper los diversos aprendizajes en diferentes pasos.En lugar de realizar la llamada api desde php (con dos fuentes de error) simplemente pruebe la llamada api en el navegador (si no sabe, GET es cuando las variables se anexan a la url, como en el ejemplo de dgilland) para que pueda juega con eso hasta que comiences a obtener una respuesta, y luego te mueves al php donde haces algo con él –

+0

oO gracias gracias :) – hellomello

+0

Intenté hacer eso con una API, pero el urlencode no funciona. Me quité eso y ahora estoy recibiendo cadenas y esas cosas, pero no hay imágenes ni nada más. solo texto del sitio (supongo). ¿alguna sugerencia? – hellomello

Cuestiones relacionadas