通常情況下用戶使用瀏覽器網(wǎng)頁表單向服務器post提交數(shù)據(jù),我們使用PHP的$_POST接收用戶POST到服務器的數(shù)據(jù),并進行適當?shù)奶幚?。但有些情況下,如用戶使用客戶端軟件向服務端php程序發(fā)送post數(shù)據(jù),而不能用$_POST來識別,那又該如何處理呢?
創(chuàng)新互聯(lián)建站專注于昌圖企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,成都商城網(wǎng)站開發(fā)。昌圖網(wǎng)站建設公司,為昌圖等地區(qū)提供建站服務。全流程按需網(wǎng)站設計,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)建站專業(yè)和態(tài)度為您提供的服務
我們介紹php接受post數(shù)據(jù)的三種方式:
1.$_POST方式接收數(shù)據(jù)
$_POST方式是通過 HTTP POST 方法傳遞的變量組成的數(shù)組,是自動全局變量。如使用$_POST[‘name’]就可以接收到網(wǎng)頁表單以及網(wǎng)頁異步方式post過來的數(shù)據(jù),
即$_POST只能接收文檔類型為Content-Type: application/x-www-form-urlencoded提交的數(shù)據(jù),也就是表單POST過來的數(shù)據(jù)。
2.$GLOBALS[‘HTTP_RAW_POST_DATA’]方式接收數(shù)據(jù)
但$GLOBALS[‘HTTP_RAW_POST_DATA’]中是否保存POST過來的數(shù)據(jù)取決于centent-Type的設置,只有在PHP在無法識別的Content-Type的情況下,才會將POST過來的數(shù)據(jù)原樣地填入變量$GLOBALS[‘HTTP_RAW_POST_DATA’]中,像Content-Type=application/x-www-form-urlencoded時,該變量是空的。
另外,它同樣無法讀取Content-Type為multipart/form-data的POST數(shù)據(jù),也需要設置php.ini中的always_populate_raw_post_data值為On,PHP才會總把POST數(shù)據(jù)填入變量$http_raw_post_data。
3.php://input方式接收數(shù)據(jù)
如果訪問原始 POST 數(shù)據(jù)的更好方法是 php://input。php://input 允許讀取 POST 的原始數(shù)據(jù)。和 $HTTP_RAW_POST_DATA 比起來,它給內存帶來的壓力較小,并且不需要任何特殊的php.ini設置,php://input不能用于 enctype=”multipart/form-data”。對于未指定 Content-Type 的POST數(shù)據(jù),則可以使用file_get_contents(“php://input”)來獲取原始數(shù)據(jù)。事實上,用PHP接收POST的任何數(shù)據(jù)都可以使用本方法。而不用考慮Content-Type,包括二進制文件流也可以。php://input讀取不到$_GET數(shù)據(jù)。是因為$
三中接受方式:
$_GET ? ?//get過來的數(shù)據(jù)
$_POST ?//post過來的數(shù)據(jù)
file_get_contents("php://input") ? //接口過來的xml等字符串數(shù)據(jù)用這個接
這三個方法足以接受任何數(shù)據(jù)了,具體你還要百度一下用法
原理很簡單:就是做一個接受請求的頁面,別人通過該頁面請求數(shù)據(jù),然后你的頁面經(jīng)過判斷決定給什么樣的數(shù)據(jù)反潰這就是傳說中的API雛形。
不知道樓主懂不懂 javascript ,會php js應該不賴哈 哈哈!
android已經(jīng)給你提供了 javascript 調用接口!
我這里就不寫網(wǎng)頁程序了啊 ,懶的敲的
就是使用webview加載網(wǎng)頁,然后android本地程序和webview網(wǎng)頁里面的js進行交互
實力話一個WebVIew 比如對象名為:webview 調用其中的方法 setJavascritEnable(true);
1:android客戶端程序 調用webview里面的js程序
webview.loadUrl("javascripot:test()");
這個時候他就會調用你網(wǎng)頁里面javascript代碼當中的test方法
2:通過網(wǎng)頁中的javascript代碼進行調用本地 android程序
mWebView.addJavascriptInterface(new Object() {
public void heiHei() {
mHandler.post(new Runnable() {
public void run() {
Toast.makeText(Test.this, "測試調用java", Toast.LENGTH_LONG).show();
}
});
}
}, "demo");
括號里面demo 就是偽造的一個dom對象的名字
然后通過 window.demo.heiHei()方法 就可以調用 本地android中代碼了
如:
div id='b'a onclick="window.demo.clickOnAndroid()"b.c/a/div
最后:傳參我就不說了 ,相信你如果看懂以上的,基本你就可以實現(xiàn)你說的,傳參也一樣!
親,給分兒吧!手敲的啊!
直接file_get_contents("php://input") 這個函數(shù)就可以接到接口傳參,建議使用json格式數(shù)據(jù)進行交互。