2017-01-23 9 views
0

Много разных вопросов об этом, но мой немного отличается.Android - Волейбол и хранение Sessioncookie

Мне нужно сделать своего рода «скрининг скриншотов» с существующего веб-сайта. Я вхожу на сайт. Сохраняя cookieariable в моих shareprefs и используя это, чтобы перемещаться по веб-сайту и представлять их, как я хочу его в своем приложении, собирая поля ввода и значения.

В любом случае. Все идет нормально. Im в состоянии войти -> сохранить cookie -> читать сайт как зарегистрированный пользователь.

Задача: Выполнение 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.

Я переместил его из фрагмента и в свою основную деятельность/Nav Activity, и это, казалось, сделало трюк.

CookieHandler.setDefault (новый CookieManager());