首頁 > 後端開發 > php教程 > 取得 post 請求的原生數據

取得 post 請求的原生數據

巴扎黑
發布: 2016-11-12 15:17:31
原創
1999 人瀏覽過

有時,有些請求提交的數據不是常見的參數名:參數值這種映射關係的鍵值對,如微信公眾平台伺服器向開發者的指定URL提交的數據,就是xml 字符串,這時,無法通過java的request.getParameter("參數名稱")來取得,也無法透過php的$_POST['參數名稱']來取得,針對這種數據,解決方法如下:

  request.setCharacterEncoding("utf-8");
StringBuilder buffer = new StringBuilder();
java.io.BufferedReader reader=null;
try{
/**
* getReader() 
* Retrieves the body of the request as character data using a BufferedReader
* getInputStream() 
* Retrieves the body of the request as binary data using a ServletInputStream.
*/
reader = request.getReader();
String line=null;
while((line = reader.readLine())!=null){
buffer.append(line);
       }
}catch(java.io.IOException e){
e.printStackTrace();
}finally{
if(null!=reader){
try {
reader.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
}
String res = buffer.toString();
System.out.print(res);
登入後複製

補充說明: getReader()與getInputStream ()一次請求過來,只能呼叫一次,二者不可同時呼叫。

Php代碼 

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
登入後複製

補充說明:

html from enctype 屬性規定在將表單資料發送到伺服器之前如何對其進行編碼,預設的缺省值是「application/x-www-form-urlencoded」 。

application/x-www-form-urlencoded,會將傳輸的資料編碼成鍵值對的形式,後端可以直接透過request.getParameter()取得

text/plain,資料以純文字形式進行編碼,其中不含任何控製或格式字元。

multipart/form-data,傳輸的資料要用到多媒體傳輸協議,由於多媒體傳輸的都是大量的數據,所以規定上傳檔案必須是post方法。
在檔案上傳時,所使用的編碼類型應是“multipart/form-data”,它既可以發送文字數據,也支援二進位資料上載。


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板