Неверный http ответ от вызова службы приложений Android - PullRequest
0 голосов
/ 19 июня 2019

Когда я вызываю API REST из службы (anagrafica в следующем коде) из клиента расширенного отдыха, он возвращает HTTP-код ответа 200 с ожидаемым результатом.Но когда я вызываю его из той же службы с той же полезной нагрузкой из моего приложения для Android, он возвращает HTTP-код ответа 302.Как это возможно?

Два скриншота для иллюстрации проблемы:

  1. вызов API из консоли расширенного отдыха
  2. тот же APIвызов из приложения Android

Служба вызывается из приложения:

        try {
            String ex = extractUni(getApplicationContext());
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
            nameValuePairs.add(new BasicNameValuePair("username", this.username));
            nameValuePairs.add(new BasicNameValuePair("password", this.password));
            URL address = new URL("https://api.xxx.xx/"+ex+"/anagrafica/");
            URLDataReader pp = new URLDataReader(getApplicationContext(), this, nameValuePairs);
            pp.execute(address);
        } catch (Exception e) {
            e.printStackTrace();
            CommonUtils cu = new CommonUtils();
            cu.sendReport(e, getApplicationContext());
        }

Это класс, который управляет вызовами:

    public class URLDataReader extends AsyncTask<URL, String, String> {

        Context mContext;
        OnAsyncTaskComplete listener;
        List<NameValuePair> nameValuePairs;
        public URLDataReader asyncObject;
        CountDownTimer cc;
        String url = "";
    public URLDataReader(Context context, OnAsyncTaskComplete lisener, List<NameValuePair> nameValuePairs) {
        mContext = context;
        listener = lisener;
        this.nameValuePairs = nameValuePairs;
    }

    @Override
    protected String doInBackground(URL... data) {


        HttpClient HttpUrlConnection  = new DefaultHttpClient();
        HttpParams httpParameters = HttpUrlConnection.getParams();

        HttpConnectionParams.setConnectionTimeout(httpParameters, 15000);
        HttpConnectionParams.setSoTimeout(httpParameters, 15000);
        HttpConnectionParams.setTcpNoDelay(httpParameters, true);

        HttpPost httppost = new HttpPost(data[0].toString());

        //this.url = httppost.toString();

        HttpResponse response = null;

        System.setProperty("http.keepAlive", "false");
        System.setProperty("java.net.preferIPv4Stack" , "true");

        try {

            httppost.setEntity(new UrlEncodedFormEntity(this.nameValuePairs));
            //SETTA I POST IN GLOBALS
            response = HttpUrlConnection.execute(httppost);


        } catch (Exception e) {

            e.printStackTrace();
            CommonUtils cu = new CommonUtils();
            cu.sendReport(e, mContext);

        }

        try {
            return convertHttpResponseToString(response);
        } catch (Exception e) {

            e.printStackTrace();
            CommonUtils cu = new CommonUtils();
            cu.sendReport(e, mContext);

        }

        return null;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        //Toast.makeText(mContext, "start timeout", Toast.LENGTH_LONG).show();
        asyncObject = this;

        cc = new CountDownTimer(10000, 1000) {

            public void onTick(long millisUntilFinished) {
                int seconds = (int) (millisUntilFinished / 1000);
                //Toast.makeText(mContext, seconds+"", Toast.LENGTH_LONG).show();
            }

            public void onFinish() {
                // stop async task if not in progress
                if (asyncObject.getStatus() == Status.RUNNING ||
                        asyncObject.getStatus() == Status.PENDING) {
                    asyncObject.cancel(true);
                    cc.cancel();
                    listener.OnAsyncTaskTimeout();
                    //Toast.makeText(mContext, "finish", Toast.LENGTH_LONG).show();
                }
            }

        }.start();
    }

    @Override
    protected void onPostExecute(String s) {
        super.onPostExecute(s);
        cc.cancel();
        listener.OnAsyncTaskComplete(s);
    }
    private String convertHttpResponseToString(HttpResponse response) throws IOException {
        InputStream responseStream = response.getEntity().getContent();
        Scanner scanner = new Scanner(responseStream, "UTF-8");
        String responseString = scanner.useDelimiter("\\Z").next();
        scanner.close();
        return responseString;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...