2017-11-11 11 views
0

私は2つのAPIを同時に解析して、1つのAPIがそのキーにAPIのリンクを持ち、 StringRequestレスポンスを忘れるリクエストに合格する別のAPIキーのレスポンスを返す2つのリクエストを組み合わせる方法

これは、最初に1つのAPIを解析し、応答で応答を取得するための私の関数ですhref別のAPI構文解析リンクのキー使用名です。 すぐに私を助けてください。 私は検索しましたが、私はこのリンクを持っていますが、それは適切なコードではありません。 https://www.versti.eu/TranslateProxy/https/stackoverflow.com/questions/37584001/how-to-combine-the-two-request-url-from-json-to-get-output-in-volley

private void parseSmartPhone() 
{ 
    StringRequest stringRequest= new        
    StringRequest(com.android.volley.Request.Method.GET, 
       Config.HOMECTEGORY, new Response.Listener<String>() { 

     @RequiresApi(api = Build.VERSION_CODES.N) 
     @Override 
     public void onResponse(String response) { 

      try { 
       //getting the whole json Array from the response 
       // JSONObject jsonObject= new JSONObject(response); 
       JSONArray jsonArray = new JSONArray(response); 
       mylist=new ArrayList<>(); 
       for (int i = 0;i<=2;i++) 
       { 
        latestsphone= new LatestSmartPhoneModel(); 

        JSONObject jsonObject = jsonArray.getJSONObject(i); 
        JSONObject objtitle=jsonObject.getJSONObject("title"); 

        title=objtitle.getString("rendered"); 

        objtitle=jsonObject.getJSONObject("_links"); 

        JSONArray imgJsonArray=objtitle.getJSONArray("wp:featuredmedia"); 

        JSONObject objJsonImg=imgJsonArray.getJSONObject(0); 

        StringRequest request1= new StringRequest(com.android.volley.Request.Method.GET,objJsonImg.getString("href"), new Response.Listener<String>() { 

         @Override 
         public void onResponse(String response) { 
          try { 

           JSONObject jsonObject= new JSONObject(response); 
           JSONObject imggild=jsonObject.getJSONObject("guid"); 
           String rendered=imggild.getString("rendered"); 

           latestsphone.setLink(rendered); 
           latestsphone.setTitle(title); 
           mylist.add(latestsphone); 


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

         } 
        }); 

        RequestQueue requestQueue= Volley.newRequestQueue(getActivity()); 
        requestQueue.add(request1); 
        request1.setRetryPolicy(new DefaultRetryPolicy(10000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 


       } 

       UpcomingAdapter imgAdapter=new UpcomingAdapter(getActivity(),mylist); 
       recyclerUpcoming.setAdapter(imgAdapter); 
       recyclerUpcoming.setLayoutManager(new GridLayoutManager(getActivity(),2)); 
       recyclerUpcoming.setHasFixedSize(true); 


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

     } 
    }); 
    RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 
    requestQueue.add(stringRequest); 
    stringRequest.setRetryPolicy(new DefaultRetryPolicy(10000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

} 
+0

最初のリクエストの正常な応答onResponse()に対する2番目のリクエストを追加する – Mundroid

答えて

0

これはあなたの適切なコードですが、私はグローバルパラメータとしてこれらを使用して、あなたの投稿コードを修正しました。

ArrayList<LatestSmartPhoneModel> mylist = new ArrayList<>(); 

String title,link;  

private void parseSmartPhone() { 

    final RequestQueue requestQueue = Volley.newRequestQueue(getActivity()); 

    StringRequest stringRequest = new StringRequest(com.android.volley.Request.Method.GET, Config.HOMECTEGORY, new Response.Listener<String>() { 

     @RequiresApi(api = Build.VERSION_CODES.N) 
     @Override 
     public void onResponse(String response) { 

      try { 
       //getting the whole json Array from the response 
       // JSONObject jsonObject= new JSONObject(response); 

       JSONArray jsonArray = new JSONArray(response); 

       for (int i = 0; i <= 3; i++) { 
        if (i==3) 
        { 
         i=4; 
        } 
        JSONObject jsonObject = jsonArray.getJSONObject(i); 

        JSONObject objtitle = jsonObject.getJSONObject("title"); 

        title = objtitle.getString("rendered"); 
        link=jsonObject.getString("link"); 
        objtitle = jsonObject.getJSONObject("_links"); 
        final LatestSmartPhoneModel latestsphone = new LatestSmartPhoneModel(); 
        latestsphone.setTitle(title); 
        latestsphone.setLink(link); 

        JSONArray imgJsonArray = objtitle.getJSONArray("wp:featuredmedia"); 

        JSONObject objJsonImg = imgJsonArray.getJSONObject(0); 

        StringRequest request1 = new StringRequest(com.android.volley.Request.Method.GET, objJsonImg.getString("href"), new Response.Listener<String>() { 

         @Override 
         public void onResponse(String response) { 
          try { 


           JSONObject jsonObject = new JSONObject(response); 
           JSONObject imggild = jsonObject.getJSONObject("guid"); 
           String rendered = imggild.getString("rendered"); 

           latestsphone.set_links(rendered); 

           mylist.add(latestsphone); 

           UpcomingAdapter imgAdapter = new UpcomingAdapter(getActivity(), mylist); 

           recyclerUpcoming.setAdapter(imgAdapter); 
           recyclerUpcoming.setLayoutManager(new GridLayoutManager(getActivity(), 2)); 
           recyclerUpcoming.setHasFixedSize(true); 

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

         } 
        }); 
        requestQueue.add(request1); 
        request1.setRetryPolicy(new DefaultRetryPolicy(10000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

       } 

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

     } 
    }); 

    requestQueue.add(stringRequest); 
    stringRequest.setRetryPolicy(new DefaultRetryPolicy(10000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 

} 
関連する問題