Pesquisar na Comunidade
Mostrando resultados para as tags ''CURL''.
Encontrado 11 registros
-
Olá! Esse erro ocorre em um php simples rodando em um servidor compartilhado Locaweb: SSL certificate problem: unable to get local issuer certificate. O php faz uma requisição ao site do Cep Aberto para consulta de endereço informando o CEP (https://www.cepaberto.com/api/v3/cep?cep=95020520) Olhei o php.ini e não tem nenhuma menção ao arquivo de certificados. Então peguei alguns tutoriais, baixei o arquivo "cacert.pem", coloquei lá e defini o curl no próprio php, ficou assim: $ch = curl_init($url); curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Token token="' . $token . '"']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_CAINFO, $cacert); curl_setopt($ch, CURLOPT_CAPATH, $cacert); $res = curl_exec($ch); if($res===FALSE) { $Res["erro"] = "curl"; $Res["msg"] = "Execução CURL falhou!"; $Res["descr"] = curl_error($ch); } else { $Res["dados"] = json_decode($res); $Res["http"] = curl_getinfo($ch, CURLINFO_HTTP_CODE); $Res["erro"] = ($Res["http"]==200)? "OK" : "http" ; $Res["msg"] = ($Res["http"]==200)? "" : "Erro HTTP ".$Res["http"] ; } Onde $cacert é o endereço do arquivo "cacert.pem", verificado antes por is_file. Mas o erro é o mesmo, como se eu nada tivesse feito. Tem que configura o Apache? Não sei como configurar o Apache, será que posso? Desabilitar o SSL do php é uma opção que não tentei ainda, dizem que não é aconselhável... O PHP é o 5.6 (pretendo ir pro 7.4 em breve) e o servidor é CENTOS 5.11 compartilhado, hospedagem Locaweb. Alguma ideia?
-
Boa tarde pessoal, Sou meio novo em programação web. Estou com o seguinte problema, qualquer ajuda será bem vinda. Em PHP, etou montando uma URL pra ser acessada com o comando Curl. Tudo está funcionando, consigo executar e receber o retorno da URL no meu script. Porém o retorno parece vir em html, e a resposta que eu quero estar está no meio de tudo. <form name="IntegracaoForm" method="post" action="/integracao.do;jsessionid=C221B55C9AF93E1A94403FAA52943FB0" enctype="multipart/form-data" id="IntegracaoForm"> <table > <tbody> <tr> <td> 000 </td> </tr> </tbody> </table> </form><br>FIM<br>-> <br /> O código de retorno vem onde está o 000. No caso eu preciso validar esse retorno, mas eu não estou conseguindo uma forma de jogar esse valor pra uma variável pra realizar um if. Alguém pode me dar alguma ideia? Agradeço desde já.
-
<?php function doPut($url, $fields) { $fields = (is_array($fields)) ? http_build_query($fields) : $fields; if ($ch = curl_init($url)) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($fields))); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_exec($ch); //$resp = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return (int) $status; } else { return false; } } session_start(); $s_chave = $_POST['edtChave']; $_SESSION['s_chave'] = $s_chave; $edtChave = $_POST['edtChave']; $edtCultura = $_POST['edtCultura']; $edtPraga = $_POST['edtPraga']; $edtDose = $_POST['edtDose']; $edtEspecificacao = $_POST['edtEspecificacao']; $edtAplicaTerrestre = $_POST['edtAplicaTerrestre']; $edtAplicarea = $_POST['edtAplicarea']; $edtIntseg = $_POST['edtIntseg']; $edtIntEntrada = $_POST['edtIntEntrada']; $edtDadosGerais = $_POST['edtDadosGerais']; $url = "www.api.site.com"; echo 'Url = ' . $url; echo '<br>'; $data_array2 = array(); for ($i = 0; $i < 5; $i++) { $montagem_array = array( 'cultura' => $_POST['edtCultura'], 'praga' => $_POST['edtPraga'], 'dose' => $_POST['edtDose'], 'especificacao' => $_POST['edtEspecificacao'], 'aplicaterrestre' => $_POST['edtAplicaTerrestre'], 'aplicaerea' => $_POST['edtAplicarea'], 'intseg' => $_POST['edtIntseg'], 'intentrada' => $_POST['edtIntEntrada'], 'dadosgerais' => $_POST['edtDadosGerais'], ); $data_array2[$i] = $montagem_array; } //$json = json_encode($data_array2); echo '<br>'; echo 'Array convertido para formato json: ' . json_encode($data_array2); echo '<br>'; //$data = $array_para_string; //echo $data.'+cultura=asdf&praga=asdf&dose=dasf&especificacao=sadf&aplicaterrestre=sadf&aplicaerea=asdf&intseg=2&intentrada=1&dadosgerais=sdaf'; $header = array( 'Authorization: falkdsjçlaskf' ); //Nova tentativa 07/01/2022 if (doPut($url, $data_array2) == 200) { echo 'Passou!'; echo '<br>'; echo json_encode($data_array2); echo '<br>'; } // do something else { echo 'Não deu certo'; echo '<br>'; echo json_encode($data_array2); echo '<br>'; } //Nova tentativa //header('location:jsonpostprodutobula_teste.php');
-
<?php function doPut($url, $fields) { $fields = (is_array($fields)) ? http_build_query($fields) : $fields; if ($ch = curl_init($url)) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($fields))); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_exec($ch); //$resp = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return (int) $status; } else { return false; } } session_start(); $s_chave = $_POST['edtChave']; $_SESSION['s_chave'] = $s_chave; $edtChave = $_POST['edtChave']; $edtCultura = $_POST['edtCultura']; $edtPraga = $_POST['edtPraga']; $edtDose = $_POST['edtDose']; $edtEspecificacao = $_POST['edtEspecificacao']; $edtAplicaTerrestre = $_POST['edtAplicaTerrestre']; $edtAplicarea = $_POST['edtAplicarea']; $edtIntseg = $_POST['edtIntseg']; $edtIntEntrada = $_POST['edtIntEntrada']; $edtDadosGerais = $_POST['edtDadosGerais']; $url = "www.api.site.com"; echo 'Url = ' . $url; echo '<br>'; $data_array2 = array(); for ($i = 0; $i < 5; $i++) { $montagem_array = array( 'cultura' => $_POST['edtCultura'], 'praga' => $_POST['edtPraga'], 'dose' => $_POST['edtDose'], 'especificacao' => $_POST['edtEspecificacao'], 'aplicaterrestre' => $_POST['edtAplicaTerrestre'], 'aplicaerea' => $_POST['edtAplicarea'], 'intseg' => $_POST['edtIntseg'], 'intentrada' => $_POST['edtIntEntrada'], 'dadosgerais' => $_POST['edtDadosGerais'], ); $data_array2[$i] = $montagem_array; } //$json = json_encode($data_array2); echo '<br>'; echo 'Array convertido para formato json: ' . json_encode($data_array2); echo '<br>'; //$data = $array_para_string; //echo $data.'+cultura=asdf&praga=asdf&dose=dasf&especificacao=sadf&aplicaterrestre=sadf&aplicaerea=asdf&intseg=2&intentrada=1&dadosgerais=sdaf'; $header = array( 'Authorization: falkdsjçlaskf' ); //Nova tentativa 07/01/2022 if (doPut($url, $data_array2) == 200) { echo 'Passou!'; echo '<br>'; echo json_encode($data_array2); echo '<br>'; } // do something else { echo 'Não deu certo'; echo '<br>'; echo json_encode($data_array2); echo '<br>'; } //Nova tentativa //header('location:jsonpostprodutobula_teste.php');
-
Como realizar put com a biblioteca curl com um array múltiplo
arlindophp postou um evento no calendário Comunidade iMasters
Pessoal estou tentando realizar um put com um json utilizando a biblioteca curl, mas só consigo fazer um por vez. Existe alguma forma de fazer isso usando a biblioteca Curl do php? Segue o código fonte funcionando, mas o curl não está aceitando um array multidimensional. ***************************** <?php function doPut($url, $fields) { $fields = (is_array($fields)) ? http_build_query($fields) : $fields; if ($ch = curl_init($url)) { curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Length: ' . strlen($fields))); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields); curl_exec($ch); //$resp = curl_exec($ch); $status = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); return (int) $status; } else { return false; } } session_start(); $s_chave = $_POST['edtChave']; $_SESSION['s_chave'] = $s_chave; $edtChave = $_POST['edtChave']; $edtCultura = $_POST['edtCultura']; $edtPraga = $_POST['edtPraga']; $edtDose = $_POST['edtDose']; $edtEspecificacao = $_POST['edtEspecificacao']; $edtAplicaTerrestre = $_POST['edtAplicaTerrestre']; $edtAplicarea = $_POST['edtAplicarea']; $edtIntseg = $_POST['edtIntseg']; $edtIntEntrada = $_POST['edtIntEntrada']; $edtDadosGerais = $_POST['edtDadosGerais']; $url = "www.api.site.com"; echo 'Url = ' . $url; echo '<br>'; $data_array2 = array(); for ($i = 0; $i < 5; $i++) { $montagem_array = array( 'cultura' => $_POST['edtCultura'], 'praga' => $_POST['edtPraga'], 'dose' => $_POST['edtDose'], 'especificacao' => $_POST['edtEspecificacao'], 'aplicaterrestre' => $_POST['edtAplicaTerrestre'], 'aplicaerea' => $_POST['edtAplicarea'], 'intseg' => $_POST['edtIntseg'], 'intentrada' => $_POST['edtIntEntrada'], 'dadosgerais' => $_POST['edtDadosGerais'], ); $data_array2[$i] = $montagem_array; } //$json = json_encode($data_array2); echo '<br>'; echo 'Array convertido para formato json: ' . json_encode($data_array2); echo '<br>'; //$data = $array_para_string; //echo $data.'+cultura=asdf&praga=asdf&dose=dasf&especificacao=sadf&aplicaterrestre=sadf&aplicaerea=asdf&intseg=2&intentrada=1&dadosgerais=sdaf'; $header = array( 'Authorization: falkdsjçlaskf' ); //Nova tentativa 07/01/2022 if (doPut($url, $data_array2) == 200) { echo 'Passou!'; echo '<br>'; echo json_encode($data_array2); echo '<br>'; } // do something else { echo 'Não deu certo'; echo '<br>'; echo json_encode($data_array2); echo '<br>'; } //Nova tentativa //header('location:jsonpostprodutobula_teste.php'); -
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);
-
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;
-
Problema ao chamar um site externo pelo PHP
cjlessa postou uma questão Perguntas e respostas rápidas
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 -
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?
-
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..
-
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); ?>