繁体   English   中英

使用AsyncHttpClient开机自检时发生java.lang.NullPointerException

[英]java.lang.NullPointerException when POST with AsyncHttpClient

我有一个端点/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 是因为我没有将任何Map传递给/hello吗? 如果是这样,如何将jsonData作为POST Map到端点?

如果没有更多信息,我无法告诉您,但是我怀疑以下方面需要更改;

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,因此该null指针异常。

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

映射表示已发布的键/值对。 要使地图非空,您必须将例如name=myname&elem=myelementapplication/x-www-form-urlencoded

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM