requestData(就是妳的aa)這裏只能接受key1=value1&key2=value2這樣的url請求字符串。
request的header沒有妳說的text/json格式,數據的提交只有application/x-www-form-urlencoded和multi/form-data這兩種格式。
其實妳這裏使用的是結構化的數據作為請求參數,更好的方式是使用gwt提供的rpc,rpc在前後臺之間可以直接傳遞可序列化的對象,在程序員看來前後臺沒有任何的區別。
在前臺使用JSObject這些對象需要有源碼才能被gwt編譯,而且即使有源碼,如果源碼中用到了gwt模擬器模擬範圍之外的java類也無法編譯,我沒用過,不清楚是否可以。下面假設可以使用:
requestB = new RequestBuilder(RequestBuilder.POST, "/api");
String aa =“aa=”+createJson().toString();
try {
requestB.setHeader("Content-Type", "application/x-www-form-urlencoded");
Request req=requestB.sendRequest(aa, new RequestCallback() {
public void onResponseReceived(Request request, Response response) {
String ret = response.getText();
}
}
在servlet裏面 ,String json = request.getParameter("aa"); JSONObject obj = JSONObject.fromString(json); String ret = 處理obj後的返回值;
response.getWriter().print(ret);