php調(diào)用遠(yuǎn)程api有兩種方法,一種是通過(guò)fsockopen函數(shù)來(lái)傳輸和調(diào)用數(shù)據(jù).

創(chuàng)新互聯(lián)建站專注于江州企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城系統(tǒng)網(wǎng)站開(kāi)發(fā)。江州網(wǎng)站建設(shè)公司,為江州等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站開(kāi)發(fā),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務(wù)
另一種方法是通過(guò)php冊(cè)curl擴(kuò)展來(lái)實(shí)現(xiàn).
現(xiàn)在大部分程序使用的都是fsockopen和pfsockopen這兩個(gè)函數(shù).
以我目前的能力沒(méi)法理解這個(gè)問(wèn)題。但我舉個(gè)例子,可能并不是你想要的答案,但沒(méi)準(zhǔn)可以提醒一下。我們用GOOGLE MAP API (開(kāi)源)的時(shí)候,會(huì)引用一個(gè)類似接口的方法,方法有很多參數(shù)可以設(shè)置。比如這是個(gè)引用地圖的方法,它的里面寫(xiě)了很多完整的方法,我這里就不放出來(lái)了,但是我舉得例子是參數(shù)傳遞在最上面的initialize () (這里我們暫時(shí)當(dāng)作接口)方法上,我們可以傳遞interface_zoom即縮放大小,interface_lati,interface_lngi就是經(jīng)緯度等等參數(shù),這些參數(shù)可以由我們自己處理,無(wú)論是從database還是什么其他方法讀取還是怎么運(yùn)算,然后call這個(gè)initialize方法帶指定參數(shù)就可以了,具體里面如何操作的地圖,如何生成的地圖,我們就不管了。接口就是我們看到日常生活中的插座,它規(guī)定好了規(guī)格,是幾項(xiàng)的插頭,我們就做成幾項(xiàng)的插頭,具體里面什么線路我們不管。方法中規(guī)定了什么類型的參數(shù),我們就傳什么類型的參數(shù),具體里面有什么算法我們不管。個(gè)人最自白的解釋,與官方有出入。
var map;
var infoWindow;
function initialize(interface_zoom,interface_lati,interface_lngi) {
var mapDiv = document.getElementById('map-canvas');
map = new google.maps.Map(mapDiv, {
center: new google.maps.LatLng(interface_lati, interface_lngi),
zoom: interface_zoom,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
......
......
}
可以寫(xiě)個(gè)interface 讓別人來(lái)實(shí)現(xiàn)接口的方法就行了。 任何網(wǎng)頁(yè)都可以是接口,為了方便數(shù)據(jù)解析一般都用json和xml響應(yīng)
RPC(Remote Procedure Call Protocol)——遠(yuǎn)程過(guò)程調(diào)用協(xié)議,它是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。
簡(jiǎn)單的說(shuō),當(dāng)用戶執(zhí)行某個(gè)功能時(shí),實(shí)際的運(yùn)算發(fā)生在服務(wù)器端。用戶只是取得了服務(wù)器端運(yùn)算的結(jié)果,而無(wú)需真實(shí)的運(yùn)算
SOAP是PRC的擴(kuò)展,允許處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和對(duì)象
php提供了
用來(lái)編寫(xiě)XML-RPC服務(wù)端和客戶端的XML-RPC擴(kuò)展
用來(lái)編寫(xiě)SOAP服務(wù)器和客戶端的SOAP擴(kuò)展。它支持SOAP1.1,SOAP 1.2,WSDL1.1規(guī)范的子集
PHPRPC 是一個(gè)輕型的、安全的、跨網(wǎng)際的、跨語(yǔ)言的、跨平臺(tái)的、跨環(huán)境的、跨域的、支持復(fù)雜對(duì)象傳輸?shù)摹⒅С忠脜?shù)傳遞的、支持內(nèi)容輸出重定向的、支持分級(jí)錯(cuò)誤處理的、支持會(huì)話的、面向服務(wù)的高性能遠(yuǎn)程過(guò)程調(diào)用協(xié)議。
他是一個(gè)代碼庫(kù)
使用PHP寫(xiě)api接口是經(jīng)常做的,PHP寫(xiě)好接口后,前臺(tái)就可以通過(guò)鏈接獲取接口提供的數(shù)據(jù),而返回的數(shù)據(jù)一般分為兩種情況,xml和json,在這個(gè)過(guò)程中,服務(wù)器并不知道,請(qǐng)求的來(lái)源是什么,有可能是別人非法調(diào)用我們的接口,獲取數(shù)據(jù),因此就要使用安全驗(yàn)證
原理
從圖中可以看得很清楚,前臺(tái)想要調(diào)用接口,需要使用幾個(gè)參數(shù)生成簽名。
時(shí)間戳:當(dāng)前時(shí)間
隨機(jī)數(shù):隨機(jī)生成的隨機(jī)數(shù)
口令:前后臺(tái)開(kāi)發(fā)時(shí),一個(gè)雙方都知道的標(biāo)識(shí),相當(dāng)于暗號(hào)
算法規(guī)則:商定好的運(yùn)算規(guī)則,上面三個(gè)參數(shù)可以利用算法規(guī)則生成一個(gè)簽名。前臺(tái)生成一個(gè)簽名,當(dāng)需要訪問(wèn)接口的時(shí)候,把時(shí)間戳,隨機(jī)數(shù),簽名通過(guò)URL傳遞到后臺(tái)。后臺(tái)拿到時(shí)間戳,隨機(jī)數(shù)后,通過(guò)一樣的算法規(guī)則計(jì)算出簽名,然后和傳遞過(guò)來(lái)的簽名進(jìn)行對(duì)比,一樣的話,返回?cái)?shù)據(jù)。
算法規(guī)則
在前后臺(tái)交互中,算法規(guī)則是非常重要的,前后臺(tái)都要通過(guò)算法規(guī)則計(jì)算出簽名,至于規(guī)則怎么制定,看你怎么高興怎么來(lái)。
我這個(gè)算法規(guī)則是
時(shí)間戳,隨機(jī)數(shù),口令按照首字母大小寫(xiě)順序排序
然后拼接成字符串
進(jìn)行sha1加密
再進(jìn)行MD5加密
轉(zhuǎn)換成大寫(xiě)。
他會(huì)提供相應(yīng)接口給你的,具體調(diào)用方法就相當(dāng)于講求某個(gè)鏈接。
如:
;type=json
在這里operate.php相當(dāng)于一個(gè)接口,其中g(shù)et_user_list 是一個(gè)API(獲取用戶列表),講求返回的數(shù)據(jù)類型為JSON格式。
你只需要在你PHP代碼中執(zhí)行這條鏈接他就會(huì)返回。
GET方式的直接使用
$file_contents = file_get_content(';type=json')
POST方式得用下面的(需要開(kāi)啟PHP curl支持)。
$url = ';type=json';
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $url );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt ( $ch, CURLOPT_POST, 1 ); //啟用POST提交
$file_contents = curl_exec ( $ch );
curl_close ( $ch );
網(wǎng)頁(yè)名稱:api數(shù)據(jù)傳輸php api接口傳輸方式
本文URL:http://chinadenli.net/article4/hjehoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站導(dǎo)航、外貿(mào)建站、網(wǎng)站設(shè)計(jì)公司、搜索引擎優(yōu)化、App開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)