2016-09-17 4 views
1

getDataを呼び出すと、onResponseから結果を取得するのが難しいようです。私はそれが現在のこの方法ではうまくいかないことを知っています。誰も私がこの問題を解決するのを手伝ってもらえますか?Volley JSON onResponse関数を実行しない

のgetData()

private void getData(){ 

    //Creating a string request 
    StringRequest stringRequest = new StringRequest(SPINNER_URL, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      // Log.d("Country_name","hi"); 
      JSONObject j = null; 
      try { 
       //Parsing the fetched Json String to JSON Object 
       j = new JSONObject(response); 

       //Storing the Array of JSON String to our JSON Array 
       result = j.getJSONArray(JSON_ARRAY); 

       Log.v("xxxxx",result.toString()); 
       String mysh=result.toString().substring(1, result.toString().length()-1); 


       JSONArray jsonArray = new JSONArray(mysh); 
       //Calling method getCountry to get the country from the JSON Array 
       getCountry(jsonArray); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
     } 
    }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 

       } 
      }); 

    //Creating a request queue 
    RequestQueue requestQueue = Volley.newRequestQueue(this); 

    //Adding request to the queue 
    requestQueue.add(stringRequest); 
} 
+0

を動作するはずだと思うこれを試してみてください。あなたはjson応答を追加できますか? – W4R10CK

+0

onErrorResponse()はどうですか?何らかのエラーのために呼ばれていないのですか? – abbath

+1

StringRequestの代わりにjsonRequestを実行した方が簡単でしょうか?また、試しにすべてのものがキャッチされているのはなぜですか?応答が良い場合は、必要はありません、右か? –

答えて

1

はuがWebサービスから取得し、私はそれが応答が何であるかを

private void getData(){ 

//Creating a string request 
StringRequest stringRequest = new StringRequest(SPINNER_URL, new Response.Listener<String>() { 
    @Override 
    public void onResponse(String response) { 


     try { 

      JSONArray jsonArray = new JSONArray(response); 
      getCountry(jsonArray); 
     } catch (JSONException e) { 
      e.printStackTrace(); 
     } 
    } 
}, 
     new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 

      } 
     }); 


RequestQueue requestQueue = Volley.newRequestQueue(this); 


requestQueue.add(stringRequest); 
} 
0

はそれを試してみてください、これは役立ちます。

private void getData() { 

    String tag_string_req = "req_name"; 
    spotsDialog.show(); 

    StringRequest strReq = new StringRequest(Method.POST, 
      YOUR URL, new Response.Listener<String>() { 

     @Override 
     public void onResponse(String response) { 
      Log.d(TAG, "Response: " + response.toString()); 

      try { 
       JSONObject object = new JSONObject(response); 
       JSONArray array = object.getJSONArray("YOUR ARRAY NAME"); 
       for (int i=0;i<array.length();i++){ 
        String result = array.getString(i).toString(); 
       } 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 

     } 
    }, new Response.ErrorListener() { 

     @Override 
     public void onErrorResponse(VolleyError error) { 
      Log.e(TAG, "Error: " + error.getMessage()); 

     } 
    }); 
    strReq.setRetryPolicy(new RetryPolicy() { 

     @Override 
     public void retry(VolleyError arg0) throws VolleyError { 
     } 

     @Override 
     public int getCurrentTimeout() { 
      return 0; 
     } 

     @Override 
     public int getCurrentRetryCount() { 
      return 0; 
     } 
    }); 
    RequestQueue requestQueue = Volley.newRequestQueue(this); 

//Adding request to the queue 
requestQueue.add(stringRequest); 
} 

ハッピートゥーヘルプ。

関連する問題