在Volley中设置cookie不起作用

问题描述 投票:1回答:1

这是我使用的代码:

 if (toEditText.getText().toString().length() > 0) {
                getName = toEditText.getText().toString().substring(0, toEditText.getText().toString().length() - 1) + "";
                StringBuffer sb = new StringBuffer();
                sb.append(Constants.SERVER_IP);
                sb.append("/api/groups.json");
                String url = sb.toString();
                LogService.log(TAG, "download url: " + url);
                JSONObject juser = new JSONObject();
                JSONArray userIds = new JSONArray();
                for (int i = 0; i < user_ids.size(); i++) {
                    userIds.put(user_ids.get(i));
                }

                try {
                    juser.put("group_name", getName);
                    juser.put("owner_id", UserCredentialsPersistence.getUserId(context));
                    juser.put("user_ids", userIds);
                    juser.put("group_type", null);
                    juser.put("name_protected", true);
                    LogService.log(TAG, "JSON: " + juser.toString());
                } catch (JSONException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                RequestQueue mRequestQueue = Volley.newRequestQueue(getActivity());
                JsonObjectRequest jr = new JsonObjectRequest(Request.Method.POST, url, juser, new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                        Log.i(TAG, "%%%%%Response:" + response.toString());
                        int group_id = 0;
                        group_name = "";
                        if (response != null) {
                            for (int i = 0; i < response.length(); i++) {
                                try {
                                    JSONObject userObj2 = (JSONObject) response.get("group");
                                    group_id = userObj2.getInt("id");
                                    group_name = userObj2.getString("name");
                                } catch (JSONException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
                            }
                            LogService.log(TAG, "id: " + group_id);
                            LogService.log(TAG, "name: " + group_name);
                            getName = "";
                            toEditText.setText("");
                            GroupAndConversationManager.getInstance(context).addNewConversation(group_id, group_name);

                            hideSearchFild();

                            int curr_group_id = UserCredentialsPersistence.getCurrentGroupId(context);

                            changeGroup(curr_group_id, group_id);
                            showGroupToast(group_name);
                            setVideoPlayback();

                        }
                    }
                }, new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.i(TAG, error.getMessage());
                    }
                }) {
                    @Override
                    public HashMap<String, String> getParams() {
                        HashMap<String, String> params = new HashMap<String, String>();
                        StringBuilder builder = new StringBuilder();
                        builder.append(UserCredentialsPersistence.restoreCookie(context));
                        params.put("Cookie", builder.toString());

                        return params;
                    }
                };
                mRequestQueue.add(jr);
}

现在,Logcat给了我这条线:

07-12 11:21:53.702: I/VideoPlayerFragment(27428): java.io.IOException: No authentication challenges found

我也尝试覆盖getHeaders而不是getParams(),但是我收到错误,因此webservice无法正常工作。这是我从哪里获得覆盖getParams / getHeaders的ideea:How to set custom header in Volley Request有人可以向我解释我做错了什么吗?

android json web-services cookies android-volley
1个回答
7
投票

使用此覆盖解决了它:

@Override
public Map<String, String> getHeaders() throws AuthFailureError {
    Map<String, String> headers = new HashMap<String, String>();
    headers.put("Cookie", UserCredentialsPersistence.restoreCookie(context).toString());
    return headers;
}
© www.soinside.com 2019 - 2024. All rights reserved.