2016-01-11 38 views

回答

6

任何你不需要创建和保存一个实际的JSON文件为每个请求。您可以简单地创建一个JSON字符串并将其作为POST有效负载发送。就执行curl而言,您应该看到PHP Manual中的本地函数。具体而言,curl_init(),curl_setopt()curl_exec()。下面是一个例子...

$url = "https://www.googleapis.com/qpxExpress/v1/trips/search?key=YOUR_API_KEY_HERE"; 

$postData = '{ 
    "request": { 
    "passengers": { 
     "adultCount": 1 
    }, 
    "slice": [ 
     { 
     "origin": "BOS", 
     "destination": "LAX", 
     "date": "2016-05-10" 
     }, 
     { 
     "origin": "LAX", 
     "destination": "BOS", 
     "date": "2016-05-15" 
     } 
    ] 
    } 
}'; 

$curlConnection = curl_init(); 

curl_setopt($curlConnection, CURLOPT_HTTPHEADER, array("Content-Type: application/json")); 
curl_setopt($curlConnection, CURLOPT_URL, $url); 
curl_setopt($curlConnection, CURLOPT_POST, TRUE); 
curl_setopt($curlConnection, CURLOPT_POSTFIELDS, $postData); 
curl_setopt($curlConnection, CURLOPT_FOLLOWLOCATION, TRUE); 
curl_setopt($curlConnection, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curlConnection, CURLOPT_SSL_VERIFYPEER, FALSE); 

$results = curl_exec($curlConnection); 

你也可以使用一个数组来创造有效载荷,然后用json_encode()将其转换成JSON字符串。

$postData = array(
    "request" => array(
     "passengers" => array(
      "adultCount" => 1 
     ), 
     "slice" => array(
      array(
       "origin" => "BOS", 
       "destination" => "LAX", 
       "date" => "2016-05-10" 
      ), 
      array(
       "origin" => "LAX", 
       "destination" => "BOS", 
       "date" => "2016-05-15" 
      ) 
     ) 
    ) 
); 

然后用

curl_setopt($curlConnection, CURLOPT_POSTFIELDS, json_encode($postData)); 
+0

感谢。有效。现在我从那里得到了json的东西。现在问题是我无法解析它。我得到了:'print_r($ flightsarray [0] - > trips-> data-> airport [0]);'结果_Notice:尝试获取非object_的属性。我也尝试过'$ flightsarray [0] [1] [1]' – xampper

+0

使用['json_decode()'](http://php.net/manual/en/function.json-decode.php)来转换结果JSON到一个对象或数组中,无论你喜欢什么。如果您有关于解析此API结果的具体问题,那么您应该为此创建一个新问题。 –