Android Волейбол ie Домен с дефисом - PullRequest
0 голосов
/ 08 июля 2020

Я использую Volley, чтобы запросить сеансовую кухню ie из моего REST Api. Действие берет очередь запросов из синглтона, и в этом классе я также установил CookieManager.
На новом телефоне с Android Api 26 повар ie находится в заголовке запроса из следующего запроса.
На более старом телефоне с Api 22 cook ie присутствует только в заголовке запроса, если домен не содержит дефиса (например, http://abc-def/... -> в cook ie Domain=abc-def;).
Запрос на вход в систему всегда успешно. Есть ли шанс решить эту проблему?

Мой синглтон:

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;

import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.CookiePolicy;

public class MySingleton {
    private static MySingleton instance;
    private RequestQueue requestQueue;
    private static Context ctx;

    private MySingleton(Context context) {
        ctx = context;
        requestQueue = getRequestQueue();
    }

    public static synchronized MySingleton getInstance(Context context) {
        if (instance == null) {
            instance = new MySingleton(context);
        }
        return instance;
    }

    public RequestQueue getRequestQueue() {
        if (requestQueue == null) {
            CookieHandler.setDefault(new CookieManager( null, CookiePolicy.ACCEPT_ALL ));
            requestQueue = Volley.newRequestQueue(ctx.getApplicationContext());
        }
        return requestQueue;
    }

    public <T> void addToRequestQueue(Request<T> req) {
        getRequestQueue().add(req);
    }
} 

Запрос на вход:

        JSONObject login = new JSONObject();
        Activity act=this;
        try {
            login.put("Username",etUserName.getText());
            login.put("Password",etPassword.getText());
        } catch (JSONException e) {
            e.printStackTrace();
        }
        JsonObjectRequest jsonObjectRequest = new JsonObjectRequest
                (Request.Method.POST, url, login, response -> {
                    try {
                        if(response.has("status") && response.getString("status").equals("ok")
                                && response.has("user")){
                            Toast.makeText(act, R.string.login_succsess,
                                    Toast.LENGTH_LONG).show();
                            Intent myIntent=getIntent();
                            Bundle b=new Bundle();
                            b.putString(getString(R.string.intent_user),response.getString("user"));
                            myIntent.putExtras(b);
                            setResult(RESULT_OK,myIntent);
                            finish();
                        }else if(response.has("status") && response.getString("status").equals("locked")){
                            Toast.makeText(act, R.string.user_locked,
                                    Toast.LENGTH_LONG).show();
                        }
                        else{
                            Toast.makeText(act, R.string.login_fail,
                                    Toast.LENGTH_LONG).show();
                        }
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }, error -> {
                    if(error instanceof AuthFailureError) {
                        Toast.makeText(this, R.string.login_fail,
                                Toast.LENGTH_LONG).show();
                    }else if(error instanceof NoConnectionError) {
                        Toast.makeText(this, R.string.no_connection,
                                Toast.LENGTH_LONG).show();
                    }else{
                        error.printStackTrace();
                    }
                });
        jsonObjectRequest.addMarker(TAG);
        MySingleton.getInstance(this).addToRequestQueue(jsonObjectRequest);
...