Buckminster
(usa Debian)
Enviado em 24/01/2023 - 16:39h
1- Esse erro Warning: curl_errno(): 2 is not a valid cURL handle resource in /var/www/html/siafic/freire/SincDeParaEscrituracao.php on line 78 é porque tu trocou a ordem das linhas que eu tinha colocado, daí não executa mesmo:
// encerra conexão e libera variável
curl_close($ch);
// Verifica se ocorreu algum erro
if(curl_errno($ch)) {
echo 'Erro: ' . curl_error($ch);
}
Tu alterou a ordem e fechou o $ch antes de verificar os erros.
O curl_close($ch); deve ficar depois das linhas de verificação dos erros.
Colocarei um código funcional que está em produção e se conecta a uma API, daí tu se baseia nele. Esse código está em um arquivo PHP que recebe o POST de outro arquivo PHP com html, css e javascript.
recipient-name é o ID e o name de um input text no html que fica no outro arquivo PHP.
$recipient = filter_input(INPUT_POST, 'recipient-name', FILTER_UNSAFE_RAW);
if(!empty($recipient)){
// URL para acessar a API
$url = 'https://api.exemplo.com/etc/etc';
// Recebe o texto do arquivo.php
$prompt = filter_input(INPUT_POST, 'recipient-name', FILTER_UNSAFE_RAW);
// Dados da requisição
$data = array(
'etc' => 'etc',
'prompt' => $prompt,
'etc' => 0,
'etc' => 200,
);
// Inicia a sessão cURL
$ch = curl_init($url);
// Caso for Linux
//$certificate_location = '/usr/local/openssl-0.9.8/certs/cacert.pem';
//Caso for Windows
$certificate_location = 'LocalMachine\My';
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $certificate_location);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $certificate_location);
// Configurações da requisição
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Authorization: Bearer SEU_TOKEN_AQUI'
));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
//var_dump($ch);
// Executa a requisição
$response = curl_exec($ch);
// Verifica se ocorreu algum erro
if(curl_errno($ch)) {
echo 'Erro: ' . curl_error($ch);
}
// Fecha a sessão cURL
curl_close($ch);
// Imprime o resultado
$resposta = json_decode($response);
echo ltrim($resposta->choices[0]->text);// . "\n";
} else{
exit();
}
Depois a resposta da API é jogada em um textarea no outro arquivo:
<div class="mb-3">
<label for="message-text" class="col-form-label">Resposta:</label>
<textarea class="form-control" id="message-text" name="message-text" style="height: 10em;"><?php if(isset($resposta->choices[0]->text)) { echo ltrim($resposta->choices[0]->text); } ?></textarea>
</div>