Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 接收及;输出JSON错误消息_Java_Android_Json_List_Hashmap - Fatal编程技术网

Java 接收及;输出JSON错误消息

Java 接收及;输出JSON错误消息,java,android,json,list,hashmap,Java,Android,Json,List,Hashmap,我创建了一个API,用于从数据库检索数据。现在,无论输入的凭据是否正确,我都能够从API检索状态、消息和数据。有两种版本的输出。我用POSTMan测试了一下,它似乎可以工作,但当我在Android上试用时,成功消息是可以的,但不是错误消息 @POST @Path("/appdatas") public Response getSAppData(AppDataRequest adr) { Response data = ads.getSAppData(adr.getId(), adr.ge

我创建了一个API,用于从数据库检索数据。现在,无论输入的凭据是否正确,我都能够从API检索状态、消息和数据。有两种版本的输出。我用POSTMan测试了一下,它似乎可以工作,但当我在Android上试用时,成功消息是可以的,但不是错误消息

@POST
@Path("/appdatas")
public Response getSAppData(AppDataRequest adr) {
    Response data = ads.getSAppData(adr.getId(), adr.getEmail(), adr.getPassword());
    return data;
}

@SuppressWarnings("unchecked")
public Response getSAppData(int id, String email, String password){
    Map<String, AppData> AppDataHM = new HashMap<String, AppData>(); 
    Map<String, Data> DataHM1 = new HashMap<String, Data>();
    Map<String, List<String>> DataHM2 = new HashMap<String, List<String>>();
    Map ADHMDHM = new HashMap<>();

    Data data = DataHM.get(new AppDataRequest (id, email, password));
    List<String> message = new ArrayList<>();
    List<String> data2 = new ArrayList<>();

    if(data != null){
        message.add("");
        AppDataHM.put("AppData", new AppData("success", message));
        DataHM1.put("Data", data);
        ADHMDHM.putAll(AppDataHM);
        ADHMDHM.putAll(DataHM1);
        String ADHMDHM1 = new Gson().toJson(ADHMDHM);
        return Response.status(200).entity(ADHMDHM1).build();
    }
    else{
        message.add("Your login information is invalid. Please try with the correct information");
        AppDataHM.put("AppData", new AppData("error", message));
        DataHM2.put("Data", data2);
        ADHMDHM.putAll(AppDataHM);
        ADHMDHM.putAll(DataHM2);
        String ADHMDHM2 = new Gson().toJson(ADHMDHM);
        return Response.status(500).entity(ADHMDHM2).build();
    }   
}
private void makeJsonObjectRequest(){
    showpDialog();

    String id1 = mEditTextID.getText().toString();
    String email1 = mEditTextEmail.getText().toString().trim();
    String password1 = mEditTextPassword.getText().toString();

    HashMap<String, String> params = new HashMap<String, String>();
    params.put("id", id1);
    params.put("email", email1);
    params.put("password", password1);

    JsonObjectRequest request = new JsonObjectRequest(url, new JSONObject(params), new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                JSONObject AppData = response.getJSONObject("AppData");
                String status = AppData.getString("status");
                String message = AppData.getString("message");
                //JSONObject Data = response.getJSONObject("Data");
                //String token = Data.getString("token");

                jsonResponse = "";
                jsonResponse += "Status: " + status + "\n";
                jsonResponse += "\n";
                jsonResponse += "Message: " + message + "\n";
                //jsonResponse += "\n";
                //jsonResponse += "Token: " + token + "\n";

                mTextViewMain.setText(jsonResponse);
                hidepDialog();
            } catch (JSONException e) {
                e.printStackTrace();
                Toast.makeText(getActivity(),
                        "Error: " + e.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }
            hidepDialog();
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error1: " + error.getMessage());
            Toast.makeText(getActivity(),
                    "Error2: " + error.getMessage(), Toast.LENGTH_SHORT).show();
            hidepDialog();
        }
    });
    AppController.getInstance().addToRequestQueue(request);
}
当我在Android上应用下面的代码时,我能够检索成功的数据,但不能检索错误的数据

@POST
@Path("/appdatas")
public Response getSAppData(AppDataRequest adr) {
    Response data = ads.getSAppData(adr.getId(), adr.getEmail(), adr.getPassword());
    return data;
}

@SuppressWarnings("unchecked")
public Response getSAppData(int id, String email, String password){
    Map<String, AppData> AppDataHM = new HashMap<String, AppData>(); 
    Map<String, Data> DataHM1 = new HashMap<String, Data>();
    Map<String, List<String>> DataHM2 = new HashMap<String, List<String>>();
    Map ADHMDHM = new HashMap<>();

    Data data = DataHM.get(new AppDataRequest (id, email, password));
    List<String> message = new ArrayList<>();
    List<String> data2 = new ArrayList<>();

    if(data != null){
        message.add("");
        AppDataHM.put("AppData", new AppData("success", message));
        DataHM1.put("Data", data);
        ADHMDHM.putAll(AppDataHM);
        ADHMDHM.putAll(DataHM1);
        String ADHMDHM1 = new Gson().toJson(ADHMDHM);
        return Response.status(200).entity(ADHMDHM1).build();
    }
    else{
        message.add("Your login information is invalid. Please try with the correct information");
        AppDataHM.put("AppData", new AppData("error", message));
        DataHM2.put("Data", data2);
        ADHMDHM.putAll(AppDataHM);
        ADHMDHM.putAll(DataHM2);
        String ADHMDHM2 = new Gson().toJson(ADHMDHM);
        return Response.status(500).entity(ADHMDHM2).build();
    }   
}
private void makeJsonObjectRequest(){
    showpDialog();

    String id1 = mEditTextID.getText().toString();
    String email1 = mEditTextEmail.getText().toString().trim();
    String password1 = mEditTextPassword.getText().toString();

    HashMap<String, String> params = new HashMap<String, String>();
    params.put("id", id1);
    params.put("email", email1);
    params.put("password", password1);

    JsonObjectRequest request = new JsonObjectRequest(url, new JSONObject(params), new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                JSONObject AppData = response.getJSONObject("AppData");
                String status = AppData.getString("status");
                String message = AppData.getString("message");
                //JSONObject Data = response.getJSONObject("Data");
                //String token = Data.getString("token");

                jsonResponse = "";
                jsonResponse += "Status: " + status + "\n";
                jsonResponse += "\n";
                jsonResponse += "Message: " + message + "\n";
                //jsonResponse += "\n";
                //jsonResponse += "Token: " + token + "\n";

                mTextViewMain.setText(jsonResponse);
                hidepDialog();
            } catch (JSONException e) {
                e.printStackTrace();
                Toast.makeText(getActivity(),
                        "Error: " + e.getMessage(),
                        Toast.LENGTH_SHORT).show();
            }
            hidepDialog();
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.d(TAG, "Error1: " + error.getMessage());
            Toast.makeText(getActivity(),
                    "Error2: " + error.getMessage(), Toast.LENGTH_SHORT).show();
            hidepDialog();
        }
    });
    AppController.getInstance().addToRequestQueue(request);
}
private void makeJsonObjectRequest(){
showpDialog();
字符串id1=mEditTextID.getText().toString();
字符串email1=mEditTextEmail.getText().toString().trim();
字符串password1=mEditTextPassword.getText().toString();
HashMap params=新的HashMap();
参数put(“id”,id1);
参数put(“电子邮件”,email1);
参数put(“密码”,password1);
JsonObjectRequest=新的JsonObjectRequest(url,新的JSONObject(参数),新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONObject AppData=response.getJSONObject(“AppData”);
字符串状态=AppData.getString(“状态”);

String message=AppData.getString(“消息”); //JSONObject Data=response.getJSONObject(“数据”); //字符串标记=Data.getString(“标记”); jsonResponse=“”; jsonResponse+=“状态:”+Status+“\n”; jsonResponse+=“\n”; jsonResponse+=“消息:”+Message+“\n”; //jsonResponse+=“\n”; //jsonResponse+=“令牌:”+Token+“\n”; mTextViewMain.setText(jsonResponse); hidepDialog(); }捕获(JSONException e){ e、 printStackTrace(); Toast.makeText(getActivity(), “错误:”+e.getMessage(), 吐司。长度(短)。show(); } hidepDialog(); } },new Response.ErrorListener(){ @凌驾 公共无效onErrorResponse(截击错误){ d(标记“Error1:+error.getMessage()); Toast.makeText(getActivity(), Error2:“+error.getMessage(),Toast.LENGTH_SHORT).show(); hidepDialog(); } }); AppController.getInstance().addToRequestQueue(请求); }

如何才能获得“错误”输出中显示的输出并显示在TextView中

感谢大家查看此问题。

您可以使用此问题为json生成具体的类。一旦有了具体的类,就可以使用将json文本转换为类。这样,您将拥有具体的json到类的映射。
这可能会有所帮助。

对于
消息
请尝试以下操作:

JSONArray messageArray = AppData.getJSONArray("message");
String message = messageArray.toString();

为什么在脚本中返回状态500?截击假设代码500为错误

return Response.status(500).entity(ADHMDHM2).build();

尝试将其更改为200,然后选中Hi@AshwaniK你的“具体课程”和TODO课程类似吗?如果你说的是Java的“类”,我的Java程序中已经有了它,但我的Android程序没有。我应该将“具体类”添加到我的Android程序中吗?具体类指的是您想要将json响应转换为的类。通常,将类映射到json有助于提高可读性和可维护性;这不是字符串,这是jsonArray。在文本视图中设置之前是否打印过消息字符串?是否有任何答案帮助?嗨@谢谢你的评论。我已经尝试过getString和getJSONArray方法,它们都适合我@Chetan也感谢您的评论。打印消息字符串意味着什么?你能帮我详细说明一下吗?嗨@谢谢你的回复。你的回答确实解决了我的问题。现在,我面临的问题是,如何才能在TextView上显示空数组?你能帮帮我吗?嗨@FerdousAhamed我尝试了getString和getJSONArray,它们都正常工作,并给出了相同的预期输出。这段代码可能无法解决我的问题,但它确实帮助我改进代码,因为我将数组的所有toString代码替换为toJSONArray。谢谢你的帮助。现在我面临显示空数组的问题。你能帮我一下吗?