【问题标题】:GET request with data-urlencode in PHP在 PHP 中使用 data-urlencode 获取请求
【发布时间】:2016-12-05 15:52:04
【问题描述】:

我正在尝试从 PHP 程序对 Influx db 进行 API 调用。要发出的 curl 请求是 -

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 MEASUREMENTS

【问题讨论】:

  • 您是否尝试过将 url 设为 localhost:8086/query?pretty=true&q=SHOW MEASUREMENTS ?
  • 如果不起作用,并且您正在传递一个帖子,请尝试 CURLOPT_POST=> 1, CURLOPT_POSTFIELDS => $_POST
  • 必须做一个 urlencode 并将查询字符串添加到 url...它现在可以工作了!感谢您指出正确的方向:)
  • @AntonioAlexandreAlonsodeSi 这行不通,因为它还没有 url 编码。 URL 中的空格用+ 编码。所以,这就像http://localhost:8086/query?pretty=true&q=SHOW+MEASUREMENTS

标签: php curl get urlencode


【解决方案1】:
$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"
    ),
));

【讨论】:

    【解决方案2】:

    简单的回答:这是错误的!您应该在 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);
    

    【讨论】:

      猜你喜欢
      • 2019-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 2017-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多