$ch = curl_init();
$url = "https://loquesea";
$dataArray = [
'dir' => "",
'phone' => 66666666,
'cp' => '{"loquesea":"xxx"}'
];
$data = http_build_query($dataArray);
$getUrl = $url."?".$data;
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $getUrl);
curl_setopt($ch, CURLOPT_TIMEOUT, 80);
$response = curl_exec($ch);
if(curl_error($ch)){
echo Request Error:' . curl_error($ch);
}else{
echo $response;
}
curl_close($ch);
Mostrando entradas con la etiqueta CURL. Mostrar todas las entradas
Mostrando entradas con la etiqueta CURL. Mostrar todas las entradas
CURL enviando parámetros por GET: HTTP request failed! HTTP/1.1 400 Bad Request
Si al mandar un CURL por GET da el error de HTTP request failed! HTTP/1.1 400 Bad Request mandar los datos de GET de la siguiente manera:
CURL: Mandar Json con autentificación
$data = array(
"phone" => "666666666",
"name" => "prueba"
);
$datosJSON = json_encode($data);
$authorization = "Authorization: Bearer eyJhbGciOiJIUzIxxxxeyJweWkiOjI3LCJzb3UiOjEsInR5cCI6OTZ9.uHryI1VKA1uoPgj1rvb5b6BXuBaI0KCTLurnsaOGaFQ";
$api_url = "https://api.loquesea/lead";
$ch = curl_init($api_url);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json' , $authorization ));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,$datosJSON);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec($ch);
curl_close($ch);
Curl: enviar autorizacion por GET con un token sin usar Authentication sino otra palabra
$token = 'abcdefg';
$data = array("user_name" => "pepe@gmail","provincia" => "28");
$ch = curl_init();
$data = http_build_query($data);
$getUrl = "https://urldelaapi/welcome?".$data;
curl_setopt($ch, CURLOPT_HTTPHEADER, array("TokenCrypt: $token"));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, fopen('curl.txt', 'w'));
curl_setopt($ch, CURLOPT_URL, $getUrl);
$response = curl_exec($ch);
curl_close($ch);
if(!$response) {
return false;
}
else{
var_dump($response);
}
CURL: Hacer que el resultado del Curl lo escriba en un fichero txt en el servidor
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_URL, $url_servicio);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization: Bearer $token"));
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, fopen('curl.txt', 'w'));
$server_output = curl_exec($ch);
CURL: Detectar si un fichero con ruta absoluta existe
$img = "imagenes/btn-home-new-01.png";
$filename = 'https://www.midominio.com/'.$img;
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_URL, $filename);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
/*
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, fopen('curl.txt', 'w'));
*/
$server_output = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo $httpCode."<br>";
if($httpCode == 404) {
echo "NO";
}
else {
echo "SI";
}
curl_close($ch);
CURL: Ejemplos de cabeceras de CURLOPT_HTTPHEADER
$headers = array(
'Content-type: text/plain',
'Content-length: 100'
);
$headers = array(
'Content-type: application/xml',
'Authorization: gfhjui',
);
$headers = array(
'Content-Type: text/xml'
);
$headers = array(
"POST ".$page." HTTP/1.0",
"Content-type: text/xml;charset='utf-8'",
"Accept: text/xml",
"Cache-Control: no-cache",
"Pragma: no-cache",
"SOAPAction: 'run'",
"Content-length: ".strlen($xml_data),
"Authorization: Basic " . base64_encode($credentials)
);
$headers = array(
'Content-Type: application/x-www-form-urlencoded'
);
$headers = array(
'Content-Type:application/json'
);
$headers = array(
"Authorization: Basic".base64_encode($usuario.":".$password)
);
$User_Agent = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31';
$headers = array(
'User-Agent: '.$User_Agent,
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
CURL: autentificación básica
$url = "https://otroservidor.com/api/v3/loquesea";
$username = "xxx";
$password = "xxxx";
$headers = array(
'Content-Type: application/json',
'Authorization: Basic '. base64_encode("$username:$password")
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, false);
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
Autentificación básica y cómo recibe los datos el lado del servidor para chequear que el user y el pw es el correcto:
$username = "uno";
$password = "dos";
$headers = array(
'Content-Type: application/json',
'Authorization: Basic '. base64_encode("$username:$password")
);
$url = "https://www.midominio.com/curl/api2.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, false);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Y en api2.php:
echo $_SERVER['PHP_AUTH_USER']."<br>";
echo $_SERVER['PHP_AUTH_PW']."<br>";
Otra forma de hacerlo sin $headers:
$url = "https://www.midominio.com/curl/api2.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, '111:222');
curl_setopt($ch, CURLOPT_POST, false);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Y en api2.php:
echo $_SERVER['PHP_AUTH_USER']."<br>";
echo $_SERVER['PHP_AUTH_PW']."<br>";
OJO: Algunos servidores tienen capado que puedan recibir el PHP_AUTH_USER y el PHP_AUTH_PW.
Ejemplo general con autentificación y mandando datos por post:
$username = "111";
$password = "222";
$headers = array(
'Content-Type: application/json',
'Authorization: Basic '. base64_encode("$username:$password")
);
$parametros = '{
"nombre": "Pepito",
"apellidos": "Pérez García",
"edad": "27",
"ciudad": "Madrid",
"email": "pepitoperez@gmail.com"
}';
$url = "https://www.midominio.com/curl/api2.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $parametros);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
En api2.php:
header("Content-Type:application/json");
if ((isset($_SERVER['PHP_AUTH_USER'])) && (isset($_SERVER['PHP_AUTH_PW']))) {
if (($_SERVER['PHP_AUTH_USER'] == "111") && ($_SERVER['PHP_AUTH_PW'] == "222")) {
$data = json_decode(file_get_contents('php://input'), true);
echo "<h1>Datos recibidos</h1>";
print_r($data);
}
else {
echo "User o PW incorrecto";
}
}
El servidor puede tener bloqueado el acceso a determinados ficheros (por ejemplo fecha.txt) para acceder al contenido del fichero:
$username = "111";
$password = "222";
$headers = array(
'Content-Type: application/json',
'Authorization: Basic '. base64_encode("$username:$password")
);
$url = "https://www.midominio.com/curl/readFile.php";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_POST, false);
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Y el fichero readFile.php:
header("Content-Type:application/json");
if ((isset($_SERVER['PHP_AUTH_USER'])) && (isset($_SERVER['PHP_AUTH_PW']))) {
if (($_SERVER['PHP_AUTH_USER'] == "111") && ($_SERVER['PHP_AUTH_PW'] == "222")) {
echo "<h1>Fichero</h1>";
echo file_get_contents("fecha.txt");
}
else {
echo "User o PW incorrecto";
}
}
CURL: Enviar datos por JSON y cómo tratarlos en el webservice que lo recibe
$data = array(
"num" => $_GET["num"]
);
$url = "https://otroservidor.com/pruebas/curl/test.php";
$ch = curl_init($url);
$datosJSON = json_encode($data);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $datosJSON);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$result = curl_exec($ch);
curl_close($ch);
echo $result;
Para llamarlo:http://localhost/pruebas/curl/sendAndGet/?num=124
En test.php del otro servidor:
header("Content-Type:application/json");
$data = json_decode(file_get_contents('php://input'), true);
foreach ($data as $clave=>$valor) {
echo "<h2>La tabla de multiplicar de ".$valor." es:</h2>";
for ($i=1;$i<=10;$i++) {
echo $valor." * ".$i." = ".$valor*($i)."<br>";
}
}
Otro ejemplo:
// add User
$url = "https://otroservidor.com/pruebas/curl/add_user.php ";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$parametros = '{
"nombre": "Pepito",
"apellidos": "Pérez García",
"edad": "27",
"ciudad": "Madrid",
"email": "pepitoperez@gmail.com"
}';
curl_setopt( $ch, CURLOPT_POSTFIELDS, $parametros);
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
$result = curl_exec($ch);
curl_close($ch);
print_r($result);
en add_user.php del otro servidor:
header("Content-Type:application/json");
$data = json_decode(file_get_contents('php://input'), true);
$host_name = "localhost";
$database = "mibasededatos";
$user_name = "root";
$password = "12345678";
$cnn = mysqli_connect($host_name, $user_name, $password, $database);
if (mysqli_connect_errno()) {
echo "ERROR AL conectar: " . mysqli_connect_error();
}
else {
// echo "TODO BIEN<hr>";
}
$sql = "insert into usuarios(nombre, apellidos, edad,ciudad,email) values ('".$data["nombre"]."','".$data["apellidos"]."','".$data["edad"]."','".$data["ciudad"]."','".$data["email"]."')";
$result = mysqli_query($cnn, $sql);
echo $result;
CURL: pasar parámetros POST con http_build_query
$fp = fopen('curl.txt', 'a');
$campos = array(
'campo1' => 'xxx',
'campo2' => 'xxx',
'campo3' => 'xxx',
'campo4' => 'xxx'
);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($campos));
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_STDERR, $fp;);
$server_output = curl_exec($ch);
if ($server_output === false) {
exit("Error Number: " . curl_errno($ch) . "<br>Error String: " . curl_error($ch) . "<br>Info: " . print_r(curl_getinfo($ch), true));
} else {
$res = json_decode($server_output);
}
curl_close($ch);
API Linkedin (Mayo 2019)
En https://www.linkedin.com/developers/ registrar una nueva APP para obtener el client_id y client_secret (verificar tb la empresa a la que asocias dicha APP).
index.php:
funciones.php:
config.php:
test_linkedin.php
index.php:
require("config.php");
require("funciones.php");
getAuthorizationCode();
funciones.php:
if (! session_id()) {
session_start();
}
function getAuthorizationCode() {
$params = array(
'response_type' => 'code',
'client_id' => CLIENT_ID,
'scope' => SCOPE,
'state' => uniqid('', true), // unique long string
'redirect_uri' => REDIRECT_URI,
);
// $url = 'https://www.linkedin.com/uas/oauth2/authorization?' . http_build_query($params);
$url = 'https://www.linkedin.com/oauth/v2/authorization?'.http_build_query($params);
$_SESSION['state'] = $params['state'];
// echo $url;
header("Location: $url");
exit;
}
config.php:
define("CLIENT_ID", "77xxxx4hr97s30");
define("CLIENT_SECRET", "LRxxxxPZd2UgEV4Z");
define("REDIRECT_URI", "http://localhost/pruebas/linkedin/test_linkedin.php");
// define("SCOPE", 'r_basicprofile r_emailaddress');
define("SCOPE", "r_liteprofile r_emailaddress");
test_linkedin.php
require("config.php");
require("funciones.php");
$_SESSION['access_token'] = $_REQUEST["code"];
$url = "https://www.linkedin.com/oauth/v2/accessToken?grant_type=authorization_code&code=".$_GET["code"]."&redirect_uri=http://localhost/pruebas/linkedin/test_linkedin.php&client_id=".CLIENT_ID."&client_secret=".CLIENT_SECRET;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url."&format=json");
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output2 = curl_exec ($ch);
curl_close ($ch);
if ($server_output2 === false) {
exit("Error Number: " . curl_errno($ch) . "<br>Error String: " . curl_error($ch) . "<br>Info: " . print_r(curl_getinfo($ch), true));
}
else {
$obj = json_decode($server_output);
}
$_SESSION['access_token'] = $obj->access_token;
// sacar datos básicos
$url = "https://api.linkedin.com/v2/me/?oauth2_access_token=".$_SESSION['access_token']; // ."&projection=(id,firstName,email-address)";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output2 = curl_exec ($ch);
curl_close ($ch);
$user_data = json_decode($server_output2);
echo "<br>Nombre: ".$user_data->firstName->localized->es_ES;
echo "<br>Apellidos: ".$user_data->lastName->localized->es_ES;
$url = "https://api.linkedin.com/v2/emailAddress?oauth2_access_token=".$_SESSION['access_token']."&q=members&projection=(elements*(handle~))"; //."&q=members&projection=(elements*(handle~))";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output2 = curl_exec ($ch);
curl_close ($ch);
$user_data = json_decode($server_output2);
// echo "<br>Email: ".$user_data->elements[0]->handle~->emailAddress;
// print_r($user_data);
foreach ($user_data->elements[0] as $clave=>$valor) {
if (isset($valor->emailAddress)) {
echo "<br>Email:".$valor->emailAddress;
}
}
CURL: Pasar parámetros en un array por GET porque a veces falla al pasarlo todo en la URL
$fecha_ES = date('d/m/Y H:i:s');
$_POST["usuario"] = "xxxx";
$_POST["contrasena"] = "xxxx";
$_POST["fecha"] = $fecha_ES;
$_POST["nombre"] = "prueba Lunes";
$_POST["apellidos"] = "prueba apellidos";
$_POST["campana"] = "999";
$_POST["telefono"] = "666777888";
$_POST["email"] = "prueba@gmail.com";
$urlAux = "http://miwebservice.com/getDatos.php";
$ch = curl_init();
$data = http_build_query($_POST);
$getUrl = $urlAux."?".$data;
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_URL, $getUrl);
curl_setopt($ch, CURLOPT_TIMEOUT, 80);
$response = curl_exec($ch);
if(curl_error($ch)){
echo 'Request Error:' . curl_error($ch);
}
else
{
echo $response;
}
curl_close($ch);
CURL: LLamadas por POST, GET, PUT y DELETE
class CurlRequest {
public function sendPost() {
$data = array("a" => "a");
$ch = curl_init("http://localhost/curlRequest/api.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
$response = curl_exec($ch);
curl_close($ch);
if(!$response) {
return false;
}
else{
var_dump($response);
}
}
public function sendPut() {
$data = array("a" => "a");
$ch = curl_init("http://localhost/curlRequest/api.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
$response = curl_exec($ch);
curl_close($ch);
if(!$response) {
return false;
}
else{
var_dump($response);
}
}
public function sendGet() {
$data = array("a" => "a");
$ch = curl_init("http://localhost/curlRequest/api.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
$response = curl_exec($ch);
curl_close($ch);
if(!$response) {
return false;
}
else{
var_dump($response);
}
}
public function sendDelete() {
$data = array("a" => "a");
$ch = curl_init("http://localhost/curlRequest/api.php");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
$response = curl_exec($ch);
curl_close($ch);
if(!$response) {
return false;
}
else{
var_dump($response);
}
}
}
Más información en:
https://www.uno-de-piera.com/curl-peticiones-post-put-get-y-delete/
Webservice: Curl
Ejemplo por POST:
Ejemplo de GET:
Otro ejemplo de GET cuando da problemas con file_get_contents pq lo tienen capado:
$url = 'http://192.66.66.666:9200/api_empresas/_search?pretty';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
$parametros = '{
"min_score":0.5,
"size":999,
"query":{
"bool":{
"should":[
{"wildcard": {"code1.raw":"'.$cod.'*"}},
{"wildcard": {"code2.raw":"'.$cod.'*"}},
{"wildcard": {"code3.raw":"'.$cod.'*"}},
{"wildcard": {"code4.raw":"'.$cod.'*"}},
{"wildcard": {"code5.raw":"'.$cod.'*"}}],
"filter":{
"term":{"estado":1}},
"minimum_should_match" : 1 }
},
"sort":[
"_score",
{"votos": {"order":"desc"}},
{"orden_tipo_oficina":{"order":"desc"}},
{"orden_descripcion":{"order":"desc"}},
{"orden_rango_empleados":{"order":"desc"}}
]
}';
curl_setopt( $ch, CURLOPT_POSTFIELDS, $parametros);
curl_setopt( $ch, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
$result = curl_exec($ch);
curl_close($ch);
return json_decode($result, true);
Ejemplo de GET:
$url = 'http://192.66.66.666:9200/api_empresas/doc/'.$url;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: 0'));
curl_setopt($ch, CURLOPT_POST, false);
$resultado = curl_exec($ch);
curl_close($ch);
return json_decode($resultado, true);
Otro ejemplo de GET cuando da problemas con file_get_contents pq lo tienen capado:
$urlCall = "http://midominio.com/webservice/getDatos.php?usuario=c893bad68927b457dbed39460e6afd62&contrasena=c893bad68927b457dbed39460e6afd62&nombre=".$nombre."DOS&apellidos=".$apellidos."&telefono=".$telefono."&email=".$email."&campana=2426&fecha=".$fecha_ES."&observaciones=";
// echo $urlCall;exit;
// $result = file_get_contents($urlCall);
$ch = curl_init();
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_URL,$urlCall);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
$data = curl_exec($ch);
curl_close($ch);
CURL: Autentificación básica
function ws_login($usuario, $password){
$url = 'https://apidotest.midominio.com/users/login';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Authorization : Basic ".base64_encode($usuario.":".$password)));
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_POST, false);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
$arrLogin = ws_login("uno", "dos");
print_r($arrLogin);
CURL en PHP
Antes de nada tiene que estar activa la extensión en localhost y en el servidor.
// Meter todo el código fuente de una web en un fichero
// Mostrar el contenido de una web de Internet
// Mostrar resultados de búsqueda en google
// Pasar parámetros por get y post
En el fichero dame_datos pondrá por ejemplo:
// Conectar por CURL a un FTP
Si se quisiera acceder a un FTP que requiere usuario y contraseña sería:
// Detectar si una ULR existe y sino que de el error
Si se envía un CURL a una url con https puede que no funcione, para que no ocurra especificar:
OJO: Usar siempre curl_getinfo($ch); // te da más información de los posibles errores
Más información en http://www.phperos.net/foro/index.php?topic=5672.0
Más información en http://phpmanuals.net/es/ref.curl.html
// Meter todo el código fuente de una web en un fichero
$ch = curl_init("http://www.abc.es");
$fp = fopen("codigo_fuente.txt", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
// Mostrar el contenido de una web de Internet
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.abc.es");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_exec($ch);
curl_close($ch);
// Mostrar resultados de búsqueda en google
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.google.es/search?q=asesora");
curl_exec($ch);
curl_close($ch);
// Pasar parámetros por get y post
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.midominio.com/dame_datos.php?ciudad=cc");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, "usuario=pepe&password=12345");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$resultado = curl_exec($ch);
echo $resultado;
curl_close($ch);
En el fichero dame_datos pondrá por ejemplo:
echo "Se ha identificado el usuario ".$_POST["usuario"]." y tiene el password: ".$_POST["password"]." y pertenece a la ciudad de ".$_GET["ciudad"];
// Conectar por CURL a un FTP
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL,"ftp://ftp.gnu.org");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
echo $result;
Si se quisiera acceder a un FTP que requiere usuario y contraseña sería:
ftp://usuario:pw@midominio.com // aunque no funciona en todos los navegadores
// Detectar si una ULR existe y sino que de el error
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.midominio.com/get_datos.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_POSTFIELDS, "usuario=pepe");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$valido = curl_exec($ch);
$info = curl_getinfo($ch);
// var_dump($info);
if ($info["http_code"] == 200) // La web existe y por tanto devuelve algo
echo $valido;
else
echo "ERROR: ".$info["http_code"];
curl_close($ch);
Si se envía un CURL a una url con https puede que no funcione, para que no ocurra especificar:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
OJO: Usar siempre curl_getinfo($ch); // te da más información de los posibles errores
Más información en http://www.phperos.net/foro/index.php?topic=5672.0
Más información en http://phpmanuals.net/es/ref.curl.html
Suscribirse a:
Entradas (Atom)
