久久99亚洲精品久久频_久久久久久久久久久身材好_日本一区二区免费高清视频_www.九九精品_国产做a爱一级毛片久_国产高潮流白浆啊免费A片动态

18842388900

網(wǎng)站建設(shè) APP開(kāi)發(fā) 小程序

Article/文章

記錄成長(zhǎng)點(diǎn)滴 分享您我感悟

您當(dāng)前位置>首頁(yè) > 知識(shí) > 網(wǎng)站建設(shè)

簡(jiǎn)單介紹在PHP中使用XML-RPC構(gòu)建Web服務(wù)

目前有兩種用于Web服務(wù)通信的協(xié)議標(biāo)準(zhǔn),一種是XML-RPC,另一種是SOAP。 XML-RPC相對(duì)簡(jiǎn)單,更早發(fā)生,SOAP更復(fù)雜,主要是當(dāng)它需要穩(wěn)定,健壯,安全和復(fù)雜時(shí)。

XML中的XML-RPC和SOAP協(xié)議的集成集中在xmlrpc擴(kuò)展中。此外,在PHP PEAR中,無(wú)論是PHP 4還是PHP 5,默認(rèn)情況下都集成了XML-RPC擴(kuò)展,并且此擴(kuò)展與xmlrpc擴(kuò)展無(wú)關(guān)。它可以獨(dú)立實(shí)現(xiàn)XML-RPC協(xié)議交互。如果沒(méi)有xmlrpc擴(kuò)展名,建議使用。使用PEAR: XML-RPC擴(kuò)展。

我們主要使用XML-RPC來(lái)描述Web Service的交互過(guò)程。部分內(nèi)容來(lái)自PHP手冊(cè)。有關(guān)詳細(xì)信息,請(qǐng)參閱手冊(cè)。

安裝xmlrpc擴(kuò)展

如果您的系統(tǒng)上沒(méi)有安裝phprpc的php擴(kuò)展,請(qǐng)正確安裝。

在Windows平臺(tái)上,首先將PHP安裝目錄中的擴(kuò)展名php_xmlrpc.dll放到C: \ Windows或C: \ Winnt目錄中,(C: \ php \ extensions目錄中的PHP4擴(kuò)展名,C: \ php \ ext中的PHP5擴(kuò)展名)目錄),同時(shí)在C: \ Windows \ php.ini或C: \ Winnt \ php.ini中,刪除分號(hào)';'在擴(kuò)展名=php_xmlrpc.dll之前,然后重新啟動(dòng)Web服務(wù)器并查看phpinfo()沒(méi)有XML-RPC項(xiàng)目來(lái)確定是否已正確安裝xmlrpc擴(kuò)展。

在Unix/Linux平臺(tái)上,如果您沒(méi)有安裝xmlrpc擴(kuò)展,請(qǐng)重新編譯PHP。在configure中,請(qǐng)?zhí)砑?-with-xmlrpc選項(xiàng),然后檢查phpinfo()以查看是否正確安裝了xmlrpc。

(注意:以下操作基于xmlrpc擴(kuò)展和正常安裝的前提,請(qǐng)務(wù)必正確安裝。)

XML-RPC工作原理

XML-RPC大致是使用XML進(jìn)行通信的整個(gè)過(guò)程。首先,構(gòu)造一個(gè)RPC服務(wù)器以使用從RPC客戶(hù)端傳遞的XML封裝請(qǐng)求,并通過(guò)XML將處理結(jié)果返回給RPC客戶(hù)端。客戶(hù)端分析XML以獲取所需的數(shù)據(jù)。

XML-RPC的服務(wù)器端必須具有客戶(hù)端調(diào)用的現(xiàn)成功能,客戶(hù)端提交的請(qǐng)求中的功能和方法必須與服務(wù)器保持一致,否則將無(wú)法獲得所需的結(jié)果。

下面我將執(zhí)行一個(gè)簡(jiǎn)單的代碼來(lái)描述整個(gè)過(guò)程。

XML-RPC實(shí)踐

服務(wù)器使用xmlrpc_server_create函數(shù)生成服務(wù)器,然后注冊(cè)需要公開(kāi)的RPC調(diào)用接口,從RPC客戶(hù)端POST接受XML數(shù)據(jù),然后對(duì)其進(jìn)行處理,并通過(guò)XML將處理結(jié)果顯示給客戶(hù)端。

代碼如下:rpc_server.php

/***功能:提供給RPC客戶(hù)端的功能。 *參數(shù):* $ method客戶(hù)端需要調(diào)用的函數(shù)* $ params客戶(hù)端需要調(diào)用的函數(shù)的參數(shù)數(shù)組*返回:返回指定調(diào)用的結(jié)果*/function rpc_server_func($ method,$ params) {$ parameter=$ params [0]; if($ parameter=='get'){$ return=''此數(shù)據(jù)通過(guò)get方法''; } else {$ return=''未指定Method或params'';} return $ return; }

//生成XML-RPC服務(wù)器端$ xmlrpc_server=xmlrpc_server_create();

//注冊(cè)服務(wù)器端方法rpc_server,實(shí)際點(diǎn)是rpc_server_func函數(shù)xmlrpc_server_register_method($ xmlrpc_server,'rpc_server','rpc_server_func');

//接受來(lái)自客戶(hù)端POST $ request=$ HTTP_RAW_POST_DATA;

的XML數(shù)據(jù)

//執(zhí)行XML請(qǐng)求到客戶(hù)端獲取執(zhí)行結(jié)果$ xmlrpc_response=xmlrpc_server_call_method($ xmlrpc_server,$ request,null);

//輸出函數(shù)頭處理的結(jié)果XML(''Content-Type: text/xml''); echo $ xmlrpc_response;

//銷(xiāo)毀XML-RPC服務(wù)器端資源xmlrpc_server_destroy($ xmlrpc_server);>

構(gòu)造服務(wù)器端,然后構(gòu)造我們的RPC客戶(hù)端。客戶(hù)端通過(guò)Socket訪問(wèn)XML-RPC服務(wù)器的80端口,然后將需要調(diào)用的RPC接口封裝到XML中,通過(guò)POST請(qǐng)求將其提交給RPC服務(wù)器,最后獲取返回的結(jié)果。服務(wù)器。

代碼如下:rpc_client.php

/***功能:為客戶(hù)端提供連接X(jué)ML-RPC服務(wù)器的功能。 *參數(shù):* $ host連接到* $ port的主機(jī)連接到主機(jī)端口* $ rpc_server XML-RPC服務(wù)器端文件* $ request封裝的XML請(qǐng)求信息*返回:連接成功后,返回服務(wù)器返回的XML信息。無(wú)法返回false */function rpc_client_call($ host,$ port,$ rpc_server,$ request){

//打開(kāi)指定的服務(wù)器端$ fp=fsockopen($ host,$ port);

//構(gòu)造需要通信的XML-RPC服務(wù)器端查詢(xún)POST請(qǐng)求信息$ query='POST $ rpc_server HTTP/1.0 \ nUser_Agent: XML-RPC Client \ nHost:'。$ host。'\ nContent-Type: text/xml \ nContent-Length:'.strlen($ request)。'\ n \ n'。$ request。'\ n';

//將構(gòu)造的HTTP協(xié)議發(fā)送到服務(wù)器,無(wú)法返回falseif(!fputs($ fp,$ query,strlen($ query))){$ errstr='Write error'; return false;} //獲取slave服務(wù)器終端返回的所有信息,包括HTTP頭和XML信息$ contents=''''; while(!feof($ fp)){$ contents。=fgets($ fp);}

//關(guān)閉連接資源fclose($ fp)后返回獲取的內(nèi)容;返回$ contents;}

//構(gòu)造連接到RPC服務(wù)器的信息$ host=''localhost''; $ port=80; $ rpc_server=''/?heiyeluren/rrpc_server.php'';

//將要發(fā)送的XML請(qǐng)求編碼為XML,要調(diào)用的方法是rpc_server,參數(shù)是get $ request=xmlrpc_encode_request(''rpc_server'',''get'');

//調(diào)用rpc_client_call函數(shù)將所有請(qǐng)求發(fā)送到XML-RPC服務(wù)器并獲取信息$ response=rpc_client_call($ host,$ port,$ rpc_server,$ request);

//分析從服務(wù)器端返回的XML,刪除HTTP頭信息,并將XML轉(zhuǎn)換為PHP可識(shí)別的字符串$ split=''''; $ xml=explode($ split,$ response); $ xml=$拆分。 array_pop($ xml); $ response=xmlrpc_decode($ xml);

//輸出從RPC服務(wù)器print_r($ response);

獲得的信息

?>

上面我們的例子大致是提交一個(gè)名為rpc_server的方法,參數(shù)是get,然后得到服務(wù)器端返回,服務(wù)器返回的XML數(shù)據(jù)是:<xml>這個(gè)數(shù)據(jù)由get方法

然后我們可以通過(guò)xmlrpc_decode函數(shù)將這個(gè)XML編碼為PHP字符串,我們可以隨意處理它,并完成整個(gè)Web服務(wù)交互。

網(wǎng)站建設(shè),小程序開(kāi)發(fā),小程序制作,微信小程序開(kāi)發(fā),公眾號(hào)開(kāi)發(fā),微信公眾號(hào)開(kāi)發(fā),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站優(yōu)化,網(wǎng)站排名,網(wǎng)站設(shè)計(jì),微信小程序設(shè)計(jì),小程序定制,微信小程序定制

相關(guān)案例查看更多

主站蜘蛛池模板: 国产精品青草久久 | 新有菜免费在线观看 | 亚洲av高清不卡在线播放 | 粉嫩一区二区三区四区公司1 | 无码高潮少妇多水多毛 | 波多野吉AV无码AV乱码在线 | 国产精品hongkong在线 | 日韩精品免费观看视频 | 日本草逼视频 | av在线看片 | 精品久久久久久日韩字幕无码 | 人妻丰满熟妇AV无码处处不卡 | 国产精品白丝娇喘喷水 | 国产成人8x视频在线播放 | 国产精品一区二区三区不卡视频 | 天天看高清谜片avhd101 | 91av国产精品 | 成人国产在线视频 | 大地资源网高清在线观看免费新浪 | 国产精品福利视频萌白酱 | 国产日本在线播放va | 91精品国产入口 | 免费欧美 | 综艺向的生活第六季免费观看 | 国产精品高清无码在线观看 | 午夜在线视频一区二区区别 | 国产xxx在线观看 | 成人导航网站 | 一个色综合国产色综合 | A级毛片高清免费视频 | 欧洲精品在线一区 | 欧美国产日韩久久 | 人人妻一区二区三区 | 国产一级在线免费观看 | 北条麻妃在线一区二区免费播放 | av观看国产 | a级在线观看视频 | 人妻少妇邻居少妇好多水在线 | 91久热欧美极品第一页 | 亚洲国产2021精品无码 | 欧美人与动性行为视频 |