簡體   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