2017-07-06 34 views
0

我如何检查,如果该文本显示或不的JSONObject不响应

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

网址: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"); 

我需要帮助,请

+0

你得到什么错误或输出错误?也发布 –

+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 

}

+0

他已经工作,谢谢你:) –

+0

是的,我忘了引号......或者你可以删除它们以及“String.valueOf ...”中的字符串转换,并将statusCode类型更改为int。 – JuanGG

0

的Json可能看起来像

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

你的代码应该..从GET或Post.You

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); 

检查响应可以调试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) { 
        }