2017-04-25 19 views
0

は、私は、私が使用しやすいようボレーを見つけたリクエスト送信要求とAndroidボレーで応答クッキーを取得

を送信するためのHttpURLConnectionを使用し、私はボレー

にクッキーを使用して問題を持ってここに私の要求機能が

public void doActionJsonPost() { 
    // Request a string response from the provided URL. 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, IConstants.BASE_URL + url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        JSONObject jsonObject; 
        try { 
         jsonObject = new JSONObject(response); 
         String msgCode = jsonObject.getString("responseCode"); 
        } catch (JSONException e) { 
         LoggingHelper.verbose(e.toString()); 
         iHttpAsync.onAsyncFailed(e.toString()); 
        } catch (Exception e) { 
         LoggingHelper.verbose(e.toString()); 
         iHttpAsync.onAsyncFailed(e.toString()); 
        } 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        LoggingHelper.verbose("ERROR"); 
        iHttpAsync.onAsyncFailed(error.getMessage()); 
       } 
      }){ 
     @Override 
     public byte[] getBody() throws AuthFailureError { 
      iHttpAsync.onAsyncProgress(); 
      return parameters.getBytes(); 
     } 
     @Override 
     public String getBodyContentType() { 
      return "application/json"; 
     } 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      return getAuthHeader(context); 
     } 

     @Override 
     protected Response<String> parseNetworkResponse(NetworkResponse response) { 
      Map<String, String> responseHeaders = response.headers; 
      String rawCookies = responseHeaders.get("Set-Cookie"); 
      return super.parseNetworkResponse(response); 
     } 
    }; 

    RequestQueue requestQueue = Volley.newRequestQueue(context); 
    requestQueue.add(stringRequest); 
} 

である私はheaderResponseを取得するためにオーバーライドparseNetworkResponseを持っていますが、私はそこにクッキー

01を見ることができません

私の質問は、どのように送って、ボレーからクッキーを入手できますか?

答えて

0

はこれを試してみて、この方法では、私は、このメソッドを呼び出します

public final void checkSessionCookie(Map<String, String> headers) { 
      if (headers.containsKey(SET_COOKIE_KEY) 
        && headers.get(SET_COOKIE_KEY).startsWith(SESSION_COOKIE)) { 
        String cookie = headers.get(SET_COOKIE_KEY); 
        if (cookie.length() > 0) { 
         String[] splitCookie = cookie.split(";"); 
         String[] splitSessionId = splitCookie[0].split("="); 
         cookie = splitSessionId[1]; 
         Editor prefEditor = _preferences.edit(); 
         prefEditor.putString(SESSION_COOKIE, cookie); 
         prefEditor.commit(); 
        } 
       } 
     } 

     /** 
     * Adds session cookie to headers if exists. 
     * @param headers 
     */ 
     public final void addSessionCookie(Map<String, String> headers) { 
      String sessionId = _preferences.getString(SESSION_COOKIE, ""); 
      if (sessionId.length() > 0) { 
       StringBuilder builder = new StringBuilder(); 
       builder.append(SESSION_COOKIE); 
       builder.append("="); 
       builder.append(sessionId); 
       if (headers.containsKey(COOKIE_KEY)) { 
        builder.append("; "); 
        builder.append(headers.get(COOKIE_KEY)); 
       } 
       headers.put(COOKIE_KEY, builder.toString()); 
      } 
     } 
+0

をあなたのヘッダを渡しますか? SET_COOKIE_KEY、SESSION_COOKIE、SESSION_COOKIE、COOKIE_KEY、_preferencesには何がありますか? 申し訳ありません私はvolleyライブラリで新しいです –

関連する問題