PHP使用Http Post請(qǐng)求發(fā)送Json對(duì)象數(shù)據(jù)代碼解析
因項(xiàng)目的需要,PHP調(diào)用第三方 Java/.Net 寫(xiě)好的 Restful Api,其中有些接口,需要 在發(fā)送 POST 請(qǐng)求時(shí),傳入對(duì)象。
Http中傳輸對(duì)象,最好的表現(xiàn)形式莫過(guò)于JSON字符串了,但是作為參數(shù)的接收方,又是需要被告知傳過(guò)來(lái)的是JSON!
其實(shí)這不難,只需要發(fā)送一個(gè) http Content-Type頭信息即可,即 “Content-Type: application/json; charset=utf-8”,參考代碼如下:
<?php
/**
* PHP發(fā)送Json對(duì)象數(shù)據(jù)
*
* @param $url 請(qǐng)求url
* @param $jsonStr 發(fā)送的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://52php.cnblogs.com";
$jsonStr = json_encode(array('a' => 1, 'b' => 2, 'c' => 2));
list($returnCode, $returnContent) = http_post_json($url, $jsonStr);
API服務(wù)端端接收客戶端傳過(guò)來(lái)的 “Content-Type: application/json; charset=utf-8”頭信息后,再將 http body 數(shù)據(jù)(即 Json字符串)轉(zhuǎn)換成 類對(duì)象!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
php 來(lái)訪國(guó)內(nèi)外IP判斷代碼并實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)
最近做了公司網(wǎng)站的一個(gè)需求:按來(lái)訪人的IP來(lái)判斷他是進(jìn)中文網(wǎng)站還是英文網(wǎng)站。2009-12-12
PHP的serialize序列化數(shù)據(jù)以及JSON格式化數(shù)據(jù)分析
這篇文章的內(nèi)容是PHP的serialize序列化數(shù)據(jù)以及JSON格式化數(shù)據(jù)分析,需要的朋友可以參考下2015-10-10
PHP面向?qū)ο蟪绦蛟O(shè)計(jì)模擬一般面向?qū)ο笳Z(yǔ)言中的方法重載(overload)示例
這篇文章主要介紹了PHP面向?qū)ο蟪绦蛟O(shè)計(jì)模擬一般面向?qū)ο笳Z(yǔ)言中的方法重載(overload),結(jié)合具體實(shí)例形式分析了php模擬一般面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中方法重載的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-06-06
php中定時(shí)計(jì)劃任務(wù)的實(shí)現(xiàn)原理
php中定時(shí)計(jì)劃任務(wù)的實(shí)現(xiàn)原理,需要的朋友可以參考下2013-01-01
php出現(xiàn)web系統(tǒng)多域名登錄失敗的解決方法
這篇文章主要介紹了php出現(xiàn)web系統(tǒng)多域名登錄失敗的解決方法,針對(duì)同一頂級(jí)域名下的各子站出現(xiàn)登錄失敗的情況非常有用,需要的朋友可以參考下2014-09-09
PHP開(kāi)發(fā)的一些注意點(diǎn)總結(jié)
技術(shù)平臺(tái)的不同,導(dǎo)致了實(shí)現(xiàn)方式的不同,同樣是PHP,小公司往往選擇的是WIN平臺(tái)而大公司選擇的是類unix平臺(tái)(Linux,FreeBSD and Other) ,現(xiàn)在就最近這段時(shí)間的學(xué)習(xí),這好乘國(guó)慶長(zhǎng)假這段時(shí)間好好的總結(jié)下的了.2010-10-10
php中使用exec,system等函數(shù)調(diào)用系統(tǒng)命令的方法(不建議使用,可導(dǎo)致安全問(wèn)題)
PHP作為一種服務(wù)器端的腳本語(yǔ)言,像編寫(xiě)簡(jiǎn)單,或者是復(fù)雜的動(dòng)態(tài)網(wǎng)頁(yè)這樣的任務(wù),它完全能夠勝任。但事情不總是如此,有時(shí)為了實(shí)現(xiàn)某個(gè)功能,必須借助于操作系統(tǒng)的外部程序(或者稱之為命令),這樣可以做到事半功倍2012-09-09

