30秒到達(dá)戰(zhàn)場(chǎng)
2018-10-04 21:10:49
文檔地址:http://developer.qiniu.com/docs/v6/api/overview/up/response/callback.h...這里給出的是PHP的demo,我用的是java語(yǔ)言獲取明文:data = Request.URL.Path +”\n” +Request.Body 部分語(yǔ)言或框架無(wú)法直接獲取請(qǐng)求body的原始數(shù)據(jù),在自行拼接時(shí)應(yīng)當(dāng)注意,body中的數(shù)據(jù)是經(jīng)過(guò)URL轉(zhuǎn)義的這里的Request.Body在java中以流的方式讀取是空值,如果以下方式讀取Enumeration<String> paramNames = request.getParameterNames();
StringBuffer sBuffer = new StringBuffer("");
while(paramNames.hasMoreElements()){
String name = paramNames.nextElement();
String value = request.getParameter(name);
sBuffer.append("&" + name + "=" + value);
}會(huì)拼裝成文章中所說(shuō)的格式,但是我無(wú)法知道順序是否正確*file_get_contents('php://input')
獲取RequestBody,其值形如:
*name=sunflower.jpg&hash=Fn6qeQi4VDLQ347NiRm-RlQx_4O2\
*&location=Shanghai&price=1500.00&uid=123有官方的技術(shù)人員幫忙解決嗎?
2 回答

一只甜甜圈
TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
都可以獲得原始的請(qǐng)求數(shù)據(jù)。
服務(wù)器獲取到的是客戶端提交的 流:InputStream 。
servlet中,request.getInputStream(); 這個(gè)就是原始的請(qǐng)求。中間框架或其它代碼可能消耗這個(gè)流,用于解析提交的請(qǐng)求。如 request.getParameterNames(); 獲得請(qǐng)求中的參數(shù);框架攔截器替使用者解析了參數(shù)等。
直接使用 servlet ,在未執(zhí)行其它操作前,獲取 request.getInputStream();;
使用 struts2 等,去掉可能消耗流(可以去掉所有攔截器)的攔截器,直接獲取 request.getInputStream();;
流 被消耗后,不能再次獲取。請(qǐng)參考 servlet 相關(guān)文檔。
添加回答
舉報(bào)
0/150
提交
取消