JSONObject没有响应

时间:2017-07-06 18:16:47

标签: android json

如何检查此文本是否出现

{"cod":"404","message":"city not found"}

url:http://api.openweathermap.org/data/2.5/weather?q=fddfgdfgdfgdfg&units=metric&appid=efb8013262db1b77b0431909b8b173e1

我的尝试

public void btn_search(View view) {
        CheckInternet checkInternet = new CheckInternet(MainActivity.this);
        boolean ci = checkInternet.isconnecting();
        if(ci)
        {
            EditText ed_Search = (EditText)findViewById(R.id.ed_Search);
            if(ed_Search.getText().length() > 0)
            {
                String urlOpenWeatherMap =  "http://api.openweathermap.org/data/2.5/weather?q=fddfgdfgdfgdfg&units=metric&appid=efb8013262db1b77b0431909b8b173e1";
                progressBar = (ProgressBar)findViewById(R.id.progressBar);
                btn_search = (ImageView)findViewById(R.id.btn_search);
                btn_search.setVisibility(View.INVISIBLE);
                progressBar.setVisibility(View.VISIBLE);
                RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
                JsonObjectRequest jsonobjectrequest = new JsonObjectRequest(Request.Method.GET, urlOpenWeatherMap, null,
                        new Response.Listener<JSONObject>() {
                            @Override
                            public void onResponse(JSONObject response) {
                                try {
                                    String x = response.getString("message");
                                    if(x.contains("404") || x.contains("city not found") )
                                    {
                                        Toast.makeText(MainActivity.this, "error", Toast.LENGTH_SHORT).show();
                                    }
                                    else
                                    {
                                        Toast.makeText(MainActivity.this, "welcome", Toast.LENGTH_SHORT).show();
                                    }
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }
                            }
                        }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                });
                requestQueue.add(jsonobjectrequest);

            }
            else
            {
            Toast.makeText(MainActivity.this, "", Toast.LENGTH_SHORT).show();
            }
        }
        else
        {
            Toast.makeText(MainActivity.this, "no Internet", Toast.LENGTH_SHORT).show();
        }
    }

我试图在4小时前解决问题,但没有用

我认为这里的问题

String x = response.getString("message");

我需要帮助

2 个答案:

答案 0 :(得分:0)

您正在响应正文中获取json文本,但服务器正在响应404代码,这是一个错误,因此逻辑需要在重写方法中:

@Override
public void onErrorResponse(VolleyError error) {
   String body;
   String statusCode = String.valueOf(error.networkResponse.statusCode);
   if(statusCode == "400") {
       // do your thing
   }
   // do something else

}

答案 1 :(得分:0)

Json可能看起来像

{"loginNodes":[{"message":"Welcome To Alamofire","name":Enamul Haque,"errorCode":"0","photo":null}]}

您的代码应该是..

 StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://api.openweathermap.org/data/2.5/weather",
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    //pDialog.dismiss();


                    try {
                        JSONObject jsonObject = new JSONObject(response);
                        JSONArray loginNodes = jsonObject.getJSONArray("loginNodes");
                        pDialog.dismiss();
                        for (int i = 0; i < loginNodes.length(); i++) {
                            JSONObject jo = loginNodes.getJSONObject(i);
                         String message=  jo.getString("message");
                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    pDialog.dismiss();
                    try {

                    } catch (Exception e) {


                    }
                }
            }) {
        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("q", "fddfgdfgdfgdfg");
            params.put("units", "metric");
            params.put("appid", "efb8013262db1b77b0431909b8b173e1");

            return params;
        }
    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);

检查来自GET或Post的响应。您可以调试错误onErrorResponse

try {

                        if (error instanceof TimeoutError ) {

                        }else if(error instanceof NoConnectionError){

                        } else if (error instanceof AuthFailureError) {

                        } else if (error instanceof ServerError) {
                            //TODO
                        } else if (error instanceof NetworkError) {
                            //TODO
                        } else if (error instanceof ParseError) {
                            //TODO
                        }

                    } catch (Exception e) {
                    }