Android - Библиотека волейбола: проблема с истекшим сроком действия в среде производства SSL

У меня было 2 страницы: первая - это страница входа, а вторая - категория. В API входа после ввода учетных данных я получаю ответ как идентификатор sesssion из заголовка ответа. Идентификатор sesssion будет сохранен и будет использоваться для дальнейших вызовов API. Я пытаюсь вызвать второй API (категория). На этой странице в качестве входных данных передается сохраненный идентификатор сеанса в заголовке запроса. Получение ответа как «сеанс истек». Также попытался передать Set-Cookie: PHPSESSID=d9f9sdkfjs9в заголовок запроса. но это не сработало.

Заметка :

  1. Я испытываю эту проблему только в рабочей среде (включен SSL)
  2. Я использую библиотеку volley для обработки API.


public void fnCallLoginAPI() {
    try {
        //DEMO URL
        //final String URL="http://demo.io/api/api.php?m=login";
        //LIVE URL
        final String URL = "https://www.live.com/shop/api/api.php?m=login";
        final String requestBody = "email=abc.b@xyz.com" + "&password=43443==" + "&strPlatform=i" + "&strDeviceToken=null";
              StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                String strResponse = response;
                System.out.println("THE RESPONSE IS in PROFILE IS" + response);
                  }
        },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {

                    }
                })
        {
            @Override
            public Map<String, String> getHeaders() throws AuthFailureError {
                Map<String, String> headers = new HashMap<>();
                headers.put("Cookie", "PHPSESSID=" + sessionID);
                return headers;
            }
 @Override
            public byte[] getBody() throws AuthFailureError {
                byte[] body = new byte[0];
                try {
                    System.out.println("THE REQIEST BODY IS" + requestBody);
                    body = requestBody.getBytes("UTF-8");
                } catch (UnsupportedEncodingException e) {
                    Log.e("TAG", "Unable to gets bytes from JSON", e.fillInStackTrace());
                }
                return body;
            }
        };

        AppApplication.getInstance().addToRequestQueue(stringRequest, "assignment");
    } catch (Exception e) {

    }
}


public void fnCallCateGoryAPI(){
try { final String URL ="https://www.live.com/shop/api/api.php?m=getcategories"; 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            String strResponse = response;
            System.out.println("THE RESPONSE IS in PROFILE IS" + response);
            JSONObject jsonObj = null;
            try {
                jsonObj = new JSONObject(strResponse);
                sessionID = jsonObj.optString("session_id");
                System.out.print("sessionID" + sessionID);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                }
            })
    {
      };

    AppApplication.getInstance().addToRequestQueue(stringRequest, "assignment");
} catch (Exception e) {}
}}

android,ssl,android-volley,session-cookies,request-headers,

5

Ответов: 2


0

@fazil попытается увеличить время истечения маркера из бэкэнд


0

@fazil: Я тоже сталкивался с чем-то подобным в моих проектах, и причина, по которой я понял, была связана с несколькими значениями заголовка, установленными под одним и тем же ключом «Set-Cookie».

Пожалуйста, проверьте это в своих журналах.

Кроме того, убедитесь, что вы правильно настроили заголовки в своем запросе (проверьте журналы запроса и ответа с вашего сервера).

Если все реализовано правильно, и проблема связана с несколькими значениями в одном заголовке, вам нужно проверить эту реализацию волейбола: https://github.com/georgiecasey/android-volley-duplicateheadersfix

андроид, SSL, андроид-залповый, сессия-печенье, запрос-заголовки,
Похожие вопросы
Яндекс.Метрика