在排球中设置Cookie不起作用

在排球中设置Cookie不起作用

问题描述:

这是我使用的代码:在排球中设置Cookie不起作用

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(),但我得到一个错误,所以Web服务无法正常工作。这是我从哪里得到了重写getParams/getHeaders的ideea:How to set custom header in Volley Request 任何人都可以向我解释我做错了什么?

+0

它看起来像问题是与身份验证,而不是饼干 – njzk2

使用此覆盖解决它:

{ 

        @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; 
        } 
+1

完美的作品... :)感谢 –

+0

Multumesc详细信息... – ChristianMEC

+0

铜placere :))) –