如何在 curl PHP 中传递 GET 参数

How to pass GET parameters in curl PHP

我是 PHP 开发的新手。我正在努力 CURL 打电话给我的 WEB API。作为新手,我发现很难理解事物。

我的 API 是如何工作的

API_URL 是 http://localhost:14909/api/meters/GetByMsn/002999000077/2017-10-11T12:16:20

它需要一个 meter serial number 和一个 data time 并通过 authorizing 和 URL 给出响应。我得到的回复是

{
"data": {
    "Response": "No"
  }
}

我想做什么

现在 PHP 我正在使用 CURL 发出请求。该请求很简单,因为它需要当前选择的 meter serial number 和一个 current date time,它还应该使用授权密钥。

到目前为止我做了什么

下面是我到目前为止完成的代码

    if( isset($_REQUEST['selected_meters']))
    {
        $m = MetersInventoryStore::findOne($_REQUEST['selected_meters']);

        $msn = $m->meter_serial; // current selected meter serial number is saved

        $date_time =  str_replace(' ','T',date('Y-m-d H:i:s')); // current date time

        $api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/'; // my base URL

        $curl = curl_init($api_url);

        curl_setopt($curl,CURLOPT_RETURNTRANSFER, CURLOPT_HTTPHEADER, array('Authorization: MY_KEY')); // setting the authorization key in header.


        exit();

    }

现在我要发送 meter serial numberdate time 参数。为此,我搜索了很多文章,但都找到了一种将参数传递为 and related link 的方法。

我正在考虑的一种方法是将参数直接传递给 URL Like:

$api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/[$msn]/[$date_time]';

$api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/' + $msn + '/'+$date_time;

但是不知道能不能用

非常感谢任何帮助。

试试这个,看看它是否有效:

$api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/${msn}/${date_time}';

$api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/{$msn}/{$date_time}';

经过大量搜索,我设法得到了回复。连接 URL 中的两个参数并更改 curl_setopt.

变化:

来自

 $api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/'; // my base URL

 $api_url = 'http://116.xx.xx.xx:xxxx/api/meters/GetByMsn/'.$msn . '/' . $date_time; // my base URL

curl_setopt($curl,CURLOPT_RETURNTRANSFER, CURLOPT_HTTPHEADER, array('Authorization: MY_KEY')); // setting the authorization key in header.

curl_setopt($curl CURLOPT_HTTPHEADER, array('Authorization: MY_KEY')); // Removed the CURLOPT_RETURNTRANSFER

然后

$curl_response = curl_exec($curl);
         print_r($curl_response);
       /* print_r($msn);
        echo $date_time;*/
        //echo date('Y-m-d H:i:s');
        exit();