安卓客服端與PHP背景通訊

來源:互聯網
上載者:User
安卓用戶端通過http協議,採用post的方式,訪問php後台檔案並傳輸資料過來,資料是key1=value1&key2=value2方式的字串,但是後台採用$_POST方式卻不能擷取到資料。列印$_SERVER,發現數組裡的HTTP_DATA元素的值就是POST過來的原生資料,使用了$_SERVER['HTTP_DATA']來擷取值。PHP5.6版本以前可以使用$HTTP_RAW_POST_DATA來擷取原生POST資料,而5.6版本棄用此方法,使用更好的file_get_contents("php://input")來擷取原生資料。請問下為什麼$_POST用於通訊為什麼會擷取不到POST方式傳過來的值?


回複討論(解決方案)

因為缺少 Content-Type: application/x-www-form-urlencoded 頭
所以 php 不會當做 post 預解析

實際應用時應根據 $_SERVER['REQUEST_METHOD'] 的值來做相應的處理
也可以直接判斷 $_POST 是否為空白

當然,file_get_contents("php://input") 後 parse_str 就廢棄了 php 的與解析了


因為缺少 Content-Type: application/x-www-form-urlencoded 頭
所以 php 不會當做 post 預解析

實際應用時應根據 $_SERVER['REQUEST_METHOD'] 的值來做相應的處理
也可以直接判斷 $_POST 是否為空白

當然,file_get_contents("php://input") 後 parse_str 就廢棄了 php 的與解析了



恩,我就是通過file_get_contents("php://input") 後 parse_str的方式擷取值的,那麼Content-Type: application/x-www-form-urlencoded這個頭是安卓用戶端寫的時候加上嗎?

是的,以 post 方法傳遞資料時,這個頭是必須的

不知道你是用什麼工具做開發的,為什麼沒有自動給加上

是的,以 post 方法傳遞資料時,這個頭是必須的

不知道你是用什麼工具做開發的,為什麼沒有自動給加上



不知道,我做背景,用戶端是遊戲做的,好像是用的Eliscpe吧。
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.