I need to consume data through GET and POST to a web service, this operation I have to do from PHP. My question is, what are the components that I need to be able to make this consumption? or any basic example of how this is done?
I need to consume data through GET and POST to a web service, this operation I have to do from PHP. My question is, what are the components that I need to be able to make this consumption? or any basic example of how this is done?
To consume the Rest API You can use this Code:
<?php
class CurlRequest
{
public function sendPost()
{
//datos a enviar
$data = array("a" => "a");
//url contra la que atacamos
$ch = curl_init("http://localhost/API/post");
//a true, obtendremos una respuesta de la url, en otro caso,
//true si es correcto, false si no lo es
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//establecemos el verbo http que queremos utilizar para la petición
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
//enviamos el array data
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
//obtenemos la respuesta
$response = curl_exec($ch);
// Se cierra el recurso CURL y se liberan los recursos del sistema
curl_close($ch);
if(!$response) {
return false;
}else{
return $response;
}
}
public function sendPut()
{
//datos a enviar
$data = array("a" => "a");
//url contra la que atacamos
$ch = curl_init("http://localhost/WebService/API_Rest/api.php");
//a true, obtendremos una respuesta de la url, en otro caso,
//true si es correcto, false si no lo es
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//establecemos el verbo http que queremos utilizar para la petición
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
//enviamos el array data
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
//obtenemos la respuesta
$response = curl_exec($ch);
// Se cierra el recurso CURL y se liberan los recursos del sistema
curl_close($ch);
if(!$response) {
return false;
}else{
var_dump($response);
}
}
public function sendGet()
{
//datos a enviar
$data = array("a" => "a");
//url contra la que atacamos
$ch = curl_init("http://localhost/WebService/API_Rest/api.php");
//a true, obtendremos una respuesta de la url, en otro caso,
//true si es correcto, false si no lo es
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//establecemos el verbo http que queremos utilizar para la petición
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
//enviamos el array data
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
//obtenemos la respuesta
$response = curl_exec($ch);
// Se cierra el recurso CURL y se liberan los recursos del sistema
curl_close($ch);
if(!$response) {
return false;
}else{
var_dump($response);
}
}
public function sendDelete()
{
//datos a enviar
$data = array("a" => "a");
//url contra la que atacamos
$ch = curl_init("http://localhost/WebService/API_Rest/api.php");
//a true, obtendremos una respuesta de la url, en otro caso,
//true si es correcto, false si no lo es
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//establecemos el verbo http que queremos utilizar para la petición
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
//enviamos el array data
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
//obtenemos la respuesta
$response = curl_exec($ch);
// Se cierra el recurso CURL y se liberan los recursos del sistema
curl_close($ch);
if(!$response) {
return false;
}else{
var_dump($response);
}
}
}
$new = new CurlRequest();
$resultado = $new ->sendPost();
var_dump($resultado);
Maybe this can help you.
If your webservice returns results in XML
<?php
// Llamada al WebService
$client = new SoapClient("http://www.webservicex.net/country.asmx?WSDL");
$result = $client->GetCountries();
$xml = $result->GetCountriesResult;
// procesar xml
$xml = simplexml_load_string($xml);
foreach($xml->Table as $table)
{
$output .= "<p>$table->Name</p>";
}
print_r($output);
?>
If your webservice returns results in JSON
<?php
// Función para llamar al webservice y devolver el resultado en un array
function callWebService($method)
{
$url ='http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo';
$json = file_get_contents($url);
$array = json_decode($json,true);
return $array;
}
That same function can be optimized in a single line:
function callWebService($method)
{
return json_decode(file_get_contents('http://api.geonames.org/citiesJSON?north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo'),true);;
}
The call could be as follows:
$resul = callWebService();
foreach($resul['geonames'] as $city)
{
$cities .= '<p>'.$city['name'].'</p>';
}
print_r ($cities);
// Method: POST, PUT, GET etc // Data: array ("param" = > "value") == > index.php? param = value
function CallAPI($method, $url, $data = false)
{
$curl = curl_init();
switch ($method)
{
case "POST":
curl_setopt($curl, CURLOPT_POST, 1);
if ($data)
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
break;
case "PUT":
curl_setopt($curl, CURLOPT_PUT, 1);
break;
default:
if ($data)
$url = sprintf("%s?%s", $url, http_build_query($data));
}
// Optional Authentication:
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, "username:password");
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}