2016-12-05 19 views
2

我想从PHP程序进行Influx db的API调用。要做出的卷曲请求 -在PHP中使用数据urlencode GET请求

curl -G 'http://localhost:8086/query?pretty=true' --data-urlencode "q=SHOW MEASUREMENTS" 

,我坚持在PHP中的代码是 -

$curl = curl_init(); 
curl_setopt_array($curl, array(
    CURLOPT_URL => "http://localhost:8086/query?pretty=true", 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "GET", 
    CURLOPT_HTTPHEADER => array(
     "cache-control: no-cache" 
    ), 
)); 

我不知道在哪个curl_setopt_array我应该送Q = SHOW测

+1

你有没有在网址尝试作为 的http://本地主机:8086 /查询漂亮=真&Q = SHOW测 ? –

+0

如果不工作,并且您正在传递帖子,请尝试使用 CURLOPT_POST => 1,CURLOPT_POSTFIELDS => $ _POST –

+1

必须执行一次urlencode并将查询字符串添加到url中......现在可以工作了!感谢您指向正确的方向:) – pradyotghate

回答

0
$query = urlencode("SHOW MEASUREMENTS"); 

$curl = curl_init(); 
curl_setopt_array($curl, array(
    CURLOPT_URL => "http://localhost:8086/query?pretty=true&q=" . $query, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "GET", 
    CURLOPT_HTTPHEADER => array(
     "cache-control: no-cache" 
    ), 
)); 
0
$url = "http://localhost:8086/query?pretty=true&q=SHOW MEASUREMENTS" 
$encoded_url = urlencode($url); 

$curl = curl_init(); 
curl_setopt_array($curl, array(
    CURLOPT_URL => $encoded_url, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "GET", 
    CURLOPT_HTTPHEADER => array(
     "cache-control: no-cache" 
    ), 
)); 

希望它可能会帮助你!

+0

URL中的空格会将其拧紧。需要urlencode它:) – pradyotghate

+0

是的。这就是为什么'urlencode'函数应该被使用,并且我已经在我的代码中使用它了。 :) – Perumal

0

简单的回答:这是错的!您应该在url字符串中转义空格。

$curl = curl_init(); 
$q = curl_escape($curl ,'SHOW MEASUREMENTS With spaces'); 
$url = "http://localhost:8086/query?pretty=true&q={$q}"; 

curl_setopt_array($curl, array(
    CURLOPT_RETURNTRANSFER => 1, 
    CURLOPT_URL => $url , 
    CURLOPT_SSL_VERIFYPEER => false, // If You have https:// 
    CURLOPT_SSL_VERIFYHOST => false, 
    CURLOPT_CUSTOMREQUEST => "GET", 
)); 
// Send the request & save response to $resp 
$resp = curl_exec($curl); 
if(!$resp){ 
    // log this Curl ERROR: 
    echo curl_error($curl) ; 
} 

curl_close($curl);