如何在curl PHP中传递GET参数

时间:2017-10-13 07:36:54

标签: php json curl php-curl

我是PHP开发的新手。我正在CURL致电我的WEB API。作为一个新手我发现很难理解。

我的API如何运作

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

需要meter serial numberdata time,并按authorizing提供回复。我得到的回应是

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

我想做什么

现在在PHP我正在使用CURL发出请求。请求很简单,因为它需要当前选定的meter serial numbercurrent 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个参数。为此,我搜索了很多文章,但我发现了一种将参数传递为queryrelated link的方法。

我想到的一种方法是将参数直接传递给URL Like:

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

OR

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

但我不知道它是否有效

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:0)

尝试一下,看看它是否有效:

$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}';

答案 1 :(得分:0)

经过大量搜索后,我设法得到回复。连接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();