Jump to content
Francisco455

Curl não coleta dados externos

Recommended Posts

Tenho uma requisição curl que não coelta os dados da url que preciso isso é problema da minha hospedagem? do servidor deles? ou algo errado no código abaixo:

$ch = curl_init();

$chamada = 'http://www.google.nl/'; // FUNCIONA
$chamada = 'https://sandbox.clicksign.com'; // NÃO FUNCIONA RETORNA VAZIO

// informar URL e outras funções ao CURL
curl_setopt($ch, CURLOPT_URL, $chamada);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Acessar a URL e retornar a saída
$output = curl_exec($ch);

// liberar
curl_close($ch);

// Imprimir a saída
echo $output;

 

Share this post


Link to post
Share on other sites

Depende de muitas coisas...

 

mas pra ter detalhado se o curl apresenta algum erro você pode usar curl_error($ch) condicionado ao funcionamento do exec, por exemplo:

$output = curl_exec($ch);
if(!$output) {
	echo curl_error($ch);
}

Dessa forma você tem o retorno caso o o exec apresente algum problema.

Alem do mais, ,precisa ver se a url requisitada tem permissão de ser requisitada dessa forma.
Se você quer simplesmente fazer um get (pegar dados sem enviar body) você poderia simplificar com file_get_contents()

Share this post


Link to post
Share on other sites
Em 09/08/2021 at 22:57, Guilherme Luiz disse:

Depende de muitas coisas...

 

mas pra ter detalhado se o curl apresenta algum erro você pode usar curl_error($ch) condicionado ao funcionamento do exec, por exemplo:


$output = curl_exec($ch);
if(!$output) {
	echo curl_error($ch);
}

Dessa forma você tem o retorno caso o o exec apresente algum problema.

Alem do mais, ,precisa ver se a url requisitada tem permissão de ser requisitada dessa forma.
Se você quer simplesmente fazer um get (pegar dados sem enviar body) você poderia simplificar com file_get_contents()

 

Obrigado pela dica, eu não vou testar o file_gets porque no futuro vou precisar enviar body sim, mas código de exibir erro mostrou o que acontece:

 

Citar

Error: error setting certificate verify locations:
CAfile: C:\Program Files (x86)\Parallels\Plesk\Additional\PHPSettings\cacert.pem
CApath: none

 

Só não entendi o que significa estou tentando em contato com o suporte do site, mas se alguém souber do que se tratar fico agradecido.

Share this post


Link to post
Share on other sites

Galera eu vim aqui só pra dar a notícia de que consegui fazer a requisição e vou compartilhar caso alguém precise:

Era basicamente um option na curl, como abaixo:

 

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
        $resultado = json_decode(curl_exec($ch));

Ainda não testei com o devido POST mas já é um avanço conseguir com o get.

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 Boca
      Pessoas estou tentando receber o retorno do curl, mas não vem nada, e na url exibe normalmente os dados json
       
      <? $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $conteudo = curl_exec($ch); $result = json_decode($conteudo, true); curl_close($ch);  
    • By cjlessa
      Boa noite,
      Peço a ajuda de vocês para o seguinte problema:
      Utilizo um script simples para mostrar uma página no meu site. O script é este:
      <?php
      $ch = curl_init();
      $timeout = 5; // set to zero for no timeout
      //curl_setopt ($ch, CURLOPT_URL, "http://151.106.108.82:8080/SAES/TotaisSetor?setor=310900605000024" );
      curl_setopt ($ch, CURLOPT_URL, "https://www.ibge.gov.br/indicadores#variacao-do-pib" );
      curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
      $file_contents = curl_exec($ch);
      curl_close($ch);// display file
      echo $file_contents;
      ?>
      A página que está comentada é a que quero mostrar. Ela não funciona. A pagina do IBGE é mostrada sem problema.
      Isto ocorre no servidor Linux, na minha máquina com windows e Xamp funciona normalmente. 
      Imagino que seja alguma configuração, mas não consegui encontrar qual é.
      Desde já agradeço.
      Um abraço,
      Carlos Lessa 
    • By Rafael Ferreira_163968
      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?
    • By Good
      Bom dia,
       
      eu tenho um formulário que as pessoas preenchem o nome, endereço, email e outros dados.
       
      E ao fazer o envio do formulário, faz algumas validações em outras apis. O sistema funciona redondo.
      E ao terminar as validações, gravo no banco de dados e posteriormente é feito um envio via CURL para outro servidor, puxando os dados gravados no BD.
      E ao chegar no último servidor, é enviado alguns formulários e outros não.
       
      Eu percebi que os formulários que chegam até o último servidor eles não tem acentuação.
      Mas aí eu tive que criar um botão para reenviar os dados. Com isso eu consigo fazer o reenvio manual. Mas eu não entendo é pq que não funciona de forma automática nas etapas de preenchimento do formulário.
       
      DETALHE: para enviar para o ultimo servidor, eu já puxo tudo do banco de dados.
       
      Meu código bem simples mesmo:
       
      $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://central.servidor.com.br/post.php?id='.$product['integration_b4you']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($array)); $response = curl_exec($ch);  
       
      Preciso adicionar algum cabeçalho? Tem como descobrir até onde o arquivo deu problema, etc.. O motivo de não ter sido enviado, ou se foi enviado e due erro lá no outro servidor, etc..
    • By marlone
      Eu estou tentando inserir uns dados em um sistema com CURL Esse é o documento deles. http://rockyecommerce.com.br/docs/ 
      estou tentando inserir uma categoria, mas não funciona, não insere e nem retorna nada... Estou travado. Alguém pode me ajudar?
      <?php $endpoint = 'categories'; $token = ''; $ch = curl_init("https://api.plataformarocky.com.br/$endpoint"); curl_setopt_array($ch, [ CURLOPT_HTTPHEADER => [ 'POST /categories HTTP/1.1', "Authorization: Bearer $token", 'Accept: application/json', 'Content-Type: application/json' ], CURLOPT_RETURNTRANSFER => 1 ]); $post = array( 'id' => '1001', 'nome' => 'teste333', 'posicao' => '3' ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $post); $response = curl_exec($ch); curl_close($ch); $result = json_decode($response, true); ?>  
×

Important Information

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