我的端点/test
需要Map
:
@POST("/hello")
@PermitAll
public JSONObject test(Map param) throws JsonParseException {
String elementName = param.get("name").toString();
String elem = param.get("elem").toString();
JSONObject json=new JSONObject();
try {
json.put("id",1);
} catch (JSONException e) {
e.printStackTrace();
}
return json;
}
我正在使用AsyncHttpClient
发送异步POST(postin JSON):
public static void asyncCallPost(JSONObject jsonData) throws Exception {
AsyncHttpClient client = new AsyncHttpClient();
try {
Response response = client.preparePost(url)
.addHeader("Content-Type", "application/json")
.addHeader("Content-Length", "" + jsonData.length())
.setBody(jsonData.toString()).execute().get();
if (response.getStatusCode() != 200) {
throw new Exception("Error ");
}
} finally {
client.close();
}
}
但我得到了java.lang.NullPointerException
。
是因为我没有将任何地图传递给/hello
吗?如果是这样,如何将POST
jsonData
作为Map
作为端点?
答案 0 :(得分:0)
如果没有进一步的信息,我无法分辨,但我怀疑以下需要改变;
String elementName = param.get("name").toString();
String elem = param.get("elem").toString();
到
String elementName;
if(param.get("name") != null){
elementName = param.get("name").toString();
}
String elem;
if(param.get("elem") != null){
elem = param.get("elem").toString();
}
param.get(" name")的原因是返回一个你尝试运行toString的null,因此空指针异常。
答案 1 :(得分:0)
您正在为正文设置JSON字符串,这就是为什么地图为空或空或充满垃圾(我没有检查自己)。
Map是POSTed的键值对的表示。要使地图非空,您必须发布,例如name=myname&elem=myelement
类型application/x-www-form-urlencoded
。