Denis Dias
Denis Dias

Reputation: 9

Apache server returning empty - curl - php for php

Good afternoon. I am facing a very specific problem. It turns out that I have an application running on a server in the clouds (hostigator - php) that makes calls via curl on a server hosted on my client. (apache - php). Access is made via IP or ddns. When I make the call (get) right in the browser, it returns json normally, but when I call the server in the clouds (hostigator) it returns an empty string.

No php that is on the server has the following header.

header ("Content-Type: application / json");

Calling method

$app->get('/getCidades/:id',    function ($id) use ($app, $db) {
$data = json_decode($app->request()->getBody());   
$ch = curl_init();
$url = $_SESSION['ip'] . $GLOBALS['servico'] . "getCidades/" . $id;
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch,CURLOPT_CONNECTTIMEOUT ,10); //timeout in seconds
curl_setopt($ch,CURLOPT_TIMEOUT, 20); // same for here. Timeout in seconds.
$response = curl_exec($ch);
curl_close ($ch); //close curl handle    
echo $response;
}
);

Server in client header("Content-Type: application/json"); header("Content-type: text/html; charset=utf-8");

$app->get(
'/getCidades/:id', 
function ($id) use ($app) {        
$conexao = ibase_connect( $GLOBALS['hostname'], $GLOBALS['usuario'],                 
$GLOBALS['senha'] ) or die( 'Erro ao conectar: ' . ibase_errmsg() );
$Ds_Query = "select DISTINCT PESSOAS.cidade2, PESSOAS.uf2 from PESSOAS where 
cidade2 <> '' and uf2 is not null order by cidade2";
$Ds_Retorno = ibase_query( $Ds_Query );
$results = array();
while ( $Ds_Linha_Banco = ibase_fetch_row( $Ds_Retorno ) )
{
$row = new Cidade();
$row->cidade = clean($Ds_Linha_Banco[0]);
$row->uf = $Ds_Linha_Banco[1]; 
$results[] = $row;
}
ibase_close($conexao);
echo json_encode(array("list"=>$results));    
}  
);

Upvotes: 0

Views: 215

Answers (1)

Thiago Ryuuga
Thiago Ryuuga

Reputation: 136

Maybe you are missing the parameter CURLOPT_POST. When you open a url using a web browser, the request is processed using a GET method, but in this case the HTTP VERB is not defined. Try add this and post back to us :)

Upvotes: 1

Related Questions