有时后台接口获取数据的时候不是使用键值对的参数获取,尤其Android发送数据是使用json格式输入流发送的,ajax使用post发送方法如下:
var da = {ckid:1,category:1};
$.ajax({
type: "POST",
url: "http://121.42.210.244:8080/haier_jiekou/storegoods/selestByCkidAngCategoryMap",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(da),
dataType: "json",
success: function (message) {
var ff = message.data[0];
console.log(ff);
},
error: function (message) {
$("#request-process-patent").html("提交数据失败!");
}
});
ajax发送添加
contentType: "application/json; charset=utf-8",
并且data值为字符串。
发送到后台的数据则通过
request.getInputStream()
获取。
后台数据处理
import org.json.JSONObject;
/**
* 解析请求中的内容,转换为map格式
*
* @author HZC
* @param request
* @return
*/
public static Map<String, String> convertRequestPrama(HttpServletRequest request) {
Map<String, String> map = new HashMap<String, String>();
// 读取请求内容
BufferedReader br = null;
try {
br = new BufferedReader(new InputStreamReader(request.getInputStream(), "UTF-8"));
} catch (IOException e) {
e.printStackTrace();
}
String line = null;
StringBuilder sb = new StringBuilder();
try {
while ((line = br.readLine()) != null) {
sb.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
// 将资料解码
String reqBody = sb.toString();
if (StringUtils.isEmpty(reqBody)) return null;
JSONObject jsonObject = new JSONObject(reqBody);
Iterator iterator = jsonObject.keys();
String key = null;
String value = null;
while (iterator.hasNext()) {
key = (String) iterator.next();
value = jsonObject.getString(key);
map.put(key, value);
}
return map;
}