2017-01-19 3 views
0

私のコードでエラーが発生します。外部リクエストはデータを返しますが、内部ループはnullを返します。シングルトンクラスのネストされたボレーリクエストはnullを返します

ここで私がやっていることは:私はいくつかのデータを要求しており、最初のリクエストから取得したIDを使用して、別のリクエストを送信するために使用します。最初の応答を受信して​​いますが、2番目のネストされた要求でERRORNullメッセージが表示されています。

私は正しいと確信しています。私はこの問題の解決策を見つけることができませんでした。

private ArrayList<Item> fetchApiData(){ 

    String url="http://www.gadgetsinnepal.com.np/wp-json/wp/v2/posts/"; 

    JsonArrayRequest jsArrayRequest = new JsonArrayRequest 
      (Request.Method.GET, url, null, new Response.Listener<JSONArray>() { 

       @Override 
       public void onResponse(JSONArray response) { 


        try { 

         // Parsing json array response 
         // loop through each json object 

         for (int i = 0; i < response.length(); i++) { 

          JSONObject item = (JSONObject) response 
            .get(i); 
          String id = item.getString("id"); 
          String date = item.getString("date"); 
          JSONObject titleobj = item 
            .getJSONObject("title"); 
          String title= titleobj.getString("rendered"); 
          String featuredMedia= item.getString("featured_media"); 
          Toast.makeText(getApplicationContext(), "ID :" + id +" Date: "+ date+ " Title "+ title + featuredMedia, 
            Toast.LENGTH_SHORT).show(); 

          JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, 
            "http://www.gadgetsinnepal.com/wp-json/wp/v2/media/"+featuredMedia, null, new Response.Listener<JSONObject>() { 

           @Override 
           public void onResponse(JSONObject nested_response) { 

            try { 
             // Parsing json object response 
             // response will be a json object 
             JSONObject guilld = nested_response.getJSONObject("guid"); 
             String featured_img_url = guilld.getString("rendered"); 
             String nestid=nested_response.getString("id"); 
             Toast.makeText(getApplicationContext(),nested_response.toString()+"IMAGE" + nestid,Toast.LENGTH_LONG).show(); 

            } catch (JSONException e) { 
             e.printStackTrace(); 
             Toast.makeText(getApplicationContext(), 
               "Error: " + e.getMessage(), 
               Toast.LENGTH_LONG).show(); 
            } 
           } 
          }, new Response.ErrorListener() { 

           @Override 
           public void onErrorResponse(VolleyError error) { 
            Toast.makeText(getApplicationContext(), 
              "ERROR"+error.getMessage(), Toast.LENGTH_LONG).show(); 
            } 
          }); 

          MySingleton.getInstance(getApplicationContext()).addToRequestQueue(jsonObjReq); 


         } 
        } catch (JSONException e) { 
         e.printStackTrace(); 
         Toast.makeText(getApplicationContext(), 
           "Error: " + e.getMessage(), 
           Toast.LENGTH_LONG).show(); 
        } 
       } 
      }, new Response.ErrorListener() { 

       @Override 
       public void onErrorResponse(VolleyError error) { 
        // TODO Auto-generated method stub 

       } 
      }); 

    MySingleton.getInstance(this).addToRequestQueue(jsArrayRequest); 


} 
+0

この関数とこの関数のgetApplicationContextを使用して、SingletonのgetInstanceを呼び出していますか?彼らは同じではありません。 –

+0

ごめんなさい。 'getApplicationContext'の代わりに何を書いてください。 –

+0

あなたは両方をgetApplicationContextにすることができます。 –

答えて

0

この問題は、エラーログがどこで与えられているかを慎重に調べることで解決しました。 メソッドに一意のログがあると、問題が発生しやすい場所を見つけることができます。私たちは何かがで起こったことがわかっこの場合

詳しい調査の結果、私たちはそこに応答コード503のメッセージを持っていました。 これが発生する理由:lifewire.com/503-service-unavailable-explained-2622940

リクエストがタイムアウトすると、これが再び発生しないように見えます。

関連する問題