Jump to content
Rafael Ferreira_163968

variavel php curl

Recommended Posts

Boa noite, nunca mechi com curl e estou tomando uma surra bunita, se puderem me ajudar, estou consumindo uma api e preciso enviar dados do mysql para esta api, mas antes estou tentando testar com variaveis feitas a mao sem conectar no BD, funcionando com as variaveis eu desenrolo a consulta depois. segue codigo e duvida:

 

<?php
$curl = curl_init();

$numero = '000000000';
$msg = 'teste de mensagem BD';

curl_setopt_array($curl, array(
  CURLOPT_URL => "http://urldaapi",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\r\n  \"menssage\": '.$msg.',\r\n  \"number\": '.$numero.'\r\n}",
  CURLOPT_HTTPHEADER => array(
    "Authorization: 0000000000000000000",
    "cache-control: no-cache"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}

nessa linha

 CURLOPT_POSTFIELDS => "{\r\n  \"menssage\": '.$msg.',\r\n  \"number\": '.$numero.'\r\n}", 

a original é a seguinte

 

CURLOPT_POSTFIELDS => "{\r\n  \"menssage\": \"Teste pela API\",\r\n  \"number\": \"6200000000\"\r\n}",

 gostaria da ajuda dos colegas de como pegar essas variaveis  $numero = '000000000'; e $msg = 'teste de mensagem BD'; e repassar elas para o CURLOPT_POSTFILDES, tentei como a primeira linha mas nao da, preciso modificar a linha original para consumir esses valores. podem me ajudar?

Share this post


Link to post
Share on other sites

Essa API parece que consome e retorna dados em JSON

Sabendo disso fica muito fácil trabalhar!

 

Veja exemplo e comentários

<?php 
/*
 * Array  com os parametros que a API solicita
*/
$jsonData = [
  	'number' => '1194445566',
  	'message' => 'minha mensagem'
];

/*
 * Endpoint da API - Prefira sempre separar em variaveis para uma melhor leitura e desacoplamento de código
*/
$endpoint = 'http://api.url';

/*
 * Array com os HEADERs que a API exige que seja utilizado
*/
$headers  = [
  'content-type: application/json',
  'Authorization Basic: XXXXXXXXXXX'
];

/*
 * Inicialização do cURL
*/
$ch = curl_init();

/*
 * Array com opções/parametros que podemos usar no cURL
 * Utilize o parametro CUSTOMREQUEST somente se for algo diferente de POST ou GET
 * Se você quiser tratar os dados recebidos deixe a opção HEADER em false, mas para fins de debug deixe como true
*/
$chOptions = [
  CURLOPT_URL => $endpoint,
  CURLOPT_RETURNTRANSFER => 1,
  CURLOPT_SSL_VERIFYHOST => 0,
  CURLOPT_SSL_VERIFYPEER => 0,
  CURLOPT_HTTPHEADER => $headers,
  CURLOPT_POST => 1,
  CURLOPT_POSTFIELDS => json_encode($jsonData),
  CURLOPT_HEADER => 0
];

/*
 * Indicamos em qual array estão as opções do cURL e então o executamos
*/
curl_setopt_array($ch,$chOptions);
$curlRequest = curl_exec($ch);

/*
 * Se o request ao endpoint for TRUE então tratamos o callback fornecido
 * Supondo que o retorno também é em JSON, nós o transformamos num array na variavel $callack
 * Se o request ao endpoint por algum motivo der erro, então imprimimos o erro da conexão
*/
if($curlRequest){
  $callback = json_decode($curlRequest,true);
  print_r ($callback);
} else {
  echo 'cURL Error # - '.curl_error($ch);
}

/*
 * Indicar o fechamento do curl ao meu ver entra como opcional, mas caso sejam várias requisições em loop, então recomendo a utilização.
*/
curl_close($ch);

 

O ideal será sempre entrar em contato com a empresa fornecedora da API porque dessa forma é certeza que eles iram conseguir ajuda-lo de forma pontual e orientada a API.

 

Esse exemplo que demonstrei serve para qualquer API que você queira utilizar, desde que ela trabalhe com recebimento e retorno de dados em JSON

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Joob
      Boas Malta,
       
      Não sei porquê que não estou a conseguir remover os ficheiros após minutos..
      Por exemplo ele vai buscar o delete_expired_shared_links e apaga a partilha feita após o tempo colocado, mas no delete_old_zips já não apaga.
      Supostamente ele vai buscar os ficheiros da pasta zip e deveria apagar.
       
      protected function schedule(Schedule $schedule) { $schedule->call(function () { $this->delete_expired_shared_links(); })->everyMinute(); $schedule->call(function () { $this->delete_old_zips(); })->everyFiveMinutes(); // Run queue jobs every minute $schedule->command('queue:work --stop-when-empty') ->everyMinute() ->withoutOverlapping(); } protected function delete_old_zips(): void { $zips = Zip::where('created_at', '<=', Carbon::now()->subDay()->toDateTimeString())->get(); $zips->each(function ($zip) { \Storage::disk('local')->delete('zip/' . $zip->basename); $zip->delete(); }); } protected function delete_expired_shared_links(): void { $shares = Share::whereNotNull('expire_in')->get(); $shares->each(function ($share) { $created_at = Carbon::parse($share->created_at); if ($created_at->diffInHours(Carbon::now()) >= $share->expire_in) { $share->delete(); } }); } }  
      Obrigado :)
    • By clayton.lima2020
      Boa Tarde!
       
      Pessoal estou com um problema para resolver:
       
      Tenho um uma string que é um Nome:  SYLVIA
       
      Eu preciso fazer uma uma busca nessa string achar a letra Y e depois verificar se após a letra Y a próxima letra é Vogal ou Consoante.
       
      No caso do nome SYLVIA a próxima letra é L então retorna Consoante.
       
      Alguém sabe montar esse algoritmo ai?
    • By Duilio Gomes Pereira
      Tenho um banco de dados com mais de 21 mil usuários do wordpress. Como faço para deletar os usuário no  Phpmyadmin e deixar apenas 2 usuários?
       
      Pois só preciso de 2 usuários neste site.
       
      Obrigado!
    • By Duilio Gomes Pereira
      Olá!
      Tenho um bando de dados com mais de 21 mil usuários do wordpress. Como faço para deletar no Phpmyadmin e deixar apenas 2 usuários?
      Obrigado!
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.