PHP CURL使用POST發送json數據

PHP CURL使用POST發送json數據

因項目的需要,PHP調用第三方 Java/.Net 寫好的 Restful Api,其中有些接口,需要 在發送 POST 請求時,傳入對象。
Http中傳輸對象,最好的表現形式莫過於JSON字符串了,但是作爲參數的接收方,又是需要被告知傳過來的是JSON!
其實這不難,只需要發送一個 http Content-Type頭信息即可,即 “Content-Type: application/json; charset=utf-8”,參考代碼如下:

/**
 * PHP發送Json對象數據
 * @param $url 請求url
 * @param $jsonStr 發送的json字符串
 * @return array
 */
function http_post_json($url, $jsonStr)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json; charset=utf-8',
            'Content-Length: ' . strlen($jsonStr)
        )
    );
    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    return array($httpCode, $response);
}

$url = "http://www.baidu.com"; //請求地址
$arr = array('a' => 1, 'b' => 2, 'c' => 2); //請求參數(數組)
$jsonStr = json_encode($arr); //轉換爲json格式
$result = http_post_json($url, $jsonStr);
print_r($result);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章