2017-01-23 8 views
0

これについては多くの異なる質問がありますが、私のところは少し異なります。Android - VolleyとSessioncookieを維持する

既存のウェブサイトから「スクリーンスクレイピング」を行う必要があります。私はサイトにログインしています。私のshareprefsでcookievariableを保存し、これを使用してウェブサイトをナビゲートし、入力フィールドと値を収集することでアプリケーションにどのようにしたいかを提示します。

とにかく。ここまでは順調ですね。私はログインすることができます - >クッキーを保存する - >ログインしたユーザーとしてウェブサイトを読んでください。

問題:同じWebサイトでPOSTを実行しています。ここでクッキーはどこかで失われているようだ。ウェブサイトはそれを読むことはできませんか、それを承認しません。自分の質問へ

// onCreate 
protected void onCreate(Bundle savedInstanceState) { 
    CookieHandler.setDefault(new CookieManager()); 
    SESSIONID = "Cookievariable"; 
    loadWebSite(); 

} 

// Read website 
private void loadWebSite(){ 
String url = "http://somewebsite"; 

RequestQueue queue = Volley.newRequestQueue(act); 

StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
    new Response.Listener<String>() 
    { 
     @Override 
     public void onResponse(String response) { 
     // Website loaded OK! 
     } 
    }, 
    ) { 

     // Set headers 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String, String> params = new HashMap<>(); 
      params.put("Cookie", SESSIONID); 
      Log.d("PARAMS", params.toString()); 
      return params; 
     } 
    }; 
    queue.add(stringRequest); 

}

// Later on - Send post when button clicked 
private void sendPost(){ 

    String url = "http://somewebsite"; 
RequestQueue queue = Volley.newRequestQueue(act); 

StringRequest postRequest = new StringRequest(Request.Method.POST, url, 
    new Response.Listener<String>() 
    { 
     @Override 
     public void onResponse(String response) { 
     // POST SENT - But something wrong with session. 
     } 
    }, 
    ) { 
     // Set POST params 
     @Override 
     public Map<String, String> getParams() throws AuthFailureError { 
      Map<String, String> postParams = new HashMap<>(); 
      postParams.put("SomeParam", "Someparamhere"); 
      return postParams; 
     } 
     // Set headers 
     @Override 
     public Map<String, String> getHeaders() throws AuthFailureError { 
      Map<String, String> params = new HashMap<>(); 
      params.put("Cookie", SESSIONID); 
      Log.d("PARAMS", params.toString()); 
      return params; 
     } 
    }; 
    queue.add(postRequest); 

}

答えて

0

回答:問題は何とかのCookieHandlerに関連していました。

私はそれをフラグメントから、メインアクティビティ/ナビアクティビティに移動しましたが、そのトリックを実行したようです。

CookieHandler.setDefault(new CookieManager());

関連する問題