restful服務端無法獲取post參數的解決方法

使用spring + cxf 搭建的restful webservice,在接收post請求參數時,我使用如下方法來解析:

public class InMessageInterceptor extends AbstractPhaseInterceptor<Message> {
public InMessageInterceptor() {
super(Phase.PRE_INVOKE);
}
......//省略
public void handleMessage(Message message) {
.......//省略
if (message.get(Message.HTTP_REQUEST_METHOD).equals("POST")) {
InputStream is = message.getContent(InputStream.class);
BufferedReader in = new BufferedReader(new InputStreamReader(is));
StringBuffer buffer = new StringBuffer();
String line = "";
try {
while ((line = in.readLine()) != null) {
// post參數,json格式
buffer.append(line);
}
logger.info("請求的參數:" + buffer);
JSONObject jasonObject = JSONObject.parseObject(URLDecoder.decode(buffer.toString(), "utf-8"));
reqParamsMap = (Map) jasonObject;
is.close();
in.close();
} catch (IOException e) {
e.printStackTrace();
logger.info("獲取webservice POST請求參數時發生異常: " + e);
}
}
}
......//省略
}

調試過程中發現,無論如何都in.readLine()都爲null,取不到post傳遞過來的json參數。

折騰了好久,後來發現是構造函數出的問題: 把PRE_INVOKE改成RECEIVE就可以正常接收到參數了。

具體原因我還沒去研究,先記錄下來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章