0

我有一个/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;
    }

我正在使用以下方式发送异步 POST(postin JSON)AsyncHttpClient

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端点?jsonDataMap

4

2 回答 2

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 的空值,因此是空指针异常。

于 2015-04-08T21:02:24.993 回答
0

您正在为正文设置一个 JSON 字符串,这就是 Map 为空或为空或充满垃圾的原因(我没有检查自己)。

Map 是 POST 的键值对的表示形式。要使 Map 不为空,您必须发布例如name=myname&elem=myelementtype application/x-www-form-urlencoded

于 2015-04-08T22:02:11.323 回答