Android 在第一个截击请求完成后调用另一个截击请求

Android 在第一个截击请求完成后调用另一个截击请求,android,json,Android,Json,例如,在我的第一个请求中,我获得了电影的ID,在第二个截击请求中,我将使用我在第一个请求中获得的电影ID搜索有关电影的信息。有没有更好的方法 在volley库中有一个请求队列。您可以将多个请求添加到队列中。但我认为你应该同时获得所有的数据。发送一部电影的多个请求是不值得的(如果你没有请求很多数据),但如果你想请求多次,你可以从onResponse接口回调 <!-- Inside the class variable --> RequestQueue queue; <!-- In

例如,在我的第一个请求中,我获得了电影的ID,在第二个截击请求中,我将使用我在第一个请求中获得的电影ID搜索有关电影的信息。有没有更好的方法

在volley库中有一个请求队列。您可以将多个请求添加到队列中。但我认为你应该同时获得所有的数据。发送一部电影的多个请求是不值得的(如果你没有请求很多数据),但如果你想请求多次,你可以从onResponse接口回调

<!-- Inside the class variable -->
RequestQueue queue;
<!-- Inside the onCreate or whatever you want -->
queue = Volley.newRequestQueue(context);

<!--1st request for movie -->
try {
        jsonObject.put("movieId",movieID);
        jsonObject.put("somedata",somedata);
        JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.POST,YOUR_IP_ADDRESS,jsonObject,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        // Call second request here and add it to queue again
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        error.printStackTrace();
                    }
                }) {
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String> params = new HashMap<>();
                params.put("id","1");
                params.put("name", "myname");
                return params;
            };
        };
        queue.add(jsObjRequest);

    }catch (Exception ex){
        ex.printStackTrace();
    }

请求队列;
queue=Volley.newRequestQueue(上下文);
试一试{
jsonObject.put(“movieId”,movieId);
jsonObject.put(“somedata”,somedata);
JsonObjectRequest jsObjRequest=新的JsonObjectRequest(Request.Method.POST,您的IP地址,jsonObject,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
//在此处调用第二个请求并再次将其添加到队列中
}
},
新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
错误。printStackTrace();
}
}) {
受保护的映射getParams()引发AuthFailureError{
Map params=新的HashMap();
参数put(“id”、“1”);
参数put(“名称”、“我的名称”);
返回参数;
};
};
add(jsObjRequest);
}捕获(例外情况除外){
例如printStackTrace();
}

是的,有一种更好的方法可以做到这一点。我想你按下一个按钮或一个小部件来获取电影的ID(可能是电影的标题或图标)。创建一个简单的小部件或覆盖你正在用作按钮的任何内容,并向其添加一个新的变量movieID,不要忘记getter和setter,无论何时创建电影图标/标题或其他内容,您还可以将.setmovieID添加到您的ID中。如果有帮助,请告诉我