2014-01-22 117 views
0

我想將json數據發佈到遠程URL,並且該url將返回json格式數據。這裏是我的代碼:php發佈json到遠程服務器並獲取json結果

$post_array=Array(
    "trips"=>array(
     "departure_code"=> "SIN", 
     "arrival_code"=> "HKT", 
     "outbound_date"=>"2014-02-29", 
     "inbound_date"=> "2014-03-05" 
     ), 
     "adults_count"=> 1 
    ); 

    $content = json_encode($post_array); 
    $curl = curl_init($search_url); 

    curl_setopt($curl, CURLOPT_HEADER, false); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json")); 
    curl_setopt($curl, CURLOPT_POST, true); 
    curl_setopt($curl, CURLOPT_POSTFIELDS, $content); 
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 

    $result  = curl_exec($curl); 
    //$response = json_decode($result); 
    var_dump($result); 
    curl_close($curl); 

結果應該是:

{ 
    "id": "pNQFapkhRQ6ZYxql4MQDbQ", 
    "key": "[SIN:HKT:2014-01-29:2014-02-05]~1~0~XX~FI", 
    "trips": [ 
    { 
     "id": "SIN:HKT:2014-01-29:2014-02-05", 
     "departure_code": "SIN", 
     "departure_name": "Singapore", 
     "trip_type": "standard" 
    } 
    ], 
"cabin": "economy", 
"adults_count": 1, 
} 

string(35) "{"message":"Problems parsing JSON"}"錯誤。感謝幫助。

+0

問題的一個簡單的演示是符合你的要求;見http://www.lornajane.net/posts/2011/posting-json-data-with-php-curl –

+0

你真的在你的第一行或數組中使用'Array(...' (小寫)?你能顯示'var_dump($ content)'的結果嗎? –

+0

嗨,我改變數組到數組,但結果是一樣的。var_dump($ content)的結果是字符串(129)「{」trips「 :{ 「departure_code」: 「SIN」, 「arrival_code」: 「HKT」, 「outbound_date」: 「2014年2月29日」, 「inbound_date」: 「2014年3月5日」}, 「adults_count」:1}」 – user3210341

回答

0

什麼是$ search_url? 你有關於這項服務的任何文件嗎?

試圖改變這一行:

curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json")); 

到:

curl_setopt(
    $curl, 
    CURLOPT_HTTPHEADER, 
    array(
     "Content-type: application/json", 
     "Content-Length: ".strlen($content) 
    ) 
); 
1

在這裏,我向您展示cURL

$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_HEADER, 0); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_HTTPHEADER, array(
              'Content-Type:application/json', 
              'Content-Length:'.strlen($data_string) 

             )); 

$json_response = curl_exec($curl); 
$curl_errorno = curl_errno($curl); 
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);