Почему мой http-запрос с android volley выдает ошибку (localhost)? - PullRequest
0 голосов
/ 08 июля 2019

Я работаю над проектом студии android, и у меня возникли некоторые проблемы при попытке отправить запрос с библиотекой залпа. Я уже проверил мой API с почтальоном, и все работает нормально, поэтому проблема в клиентской части.

Я уже добавил интернет-разрешение в свой манифест Android:

<uses-permission android:name="android.permission.INTERNET"/>

Вот мой код, я создал функцию с именем "login", которая получает два параметра, которые представляют собой данные, которые я хочу отправить по почте:

     private void login(final String email, final String password){
        final String url = "http://192.168.100.2:8000/login_facebook_app";

        RequestQueue requestQueue = Volley.newRequestQueue(this);

        StringRequest postRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Toast.makeText(getBaseContext(), response, Toast.LENGTH_SHORT).show();
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Toast.makeText(getBaseContext(), error.toString(), Toast.LENGTH_SHORT).show();
            }
        }){
            @Override
            protected Map<String, String> getParams() throws AuthFailureError {
                Map<String, String>  params = new HashMap<String, String>();
                params.put("email", email);
                params.put("password", password);

                return params;
            }
        };

        postRequest.setRetryPolicy(new DefaultRetryPolicy(
                15000,
                DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
                DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));

        requestQueue.add(postRequest);
    }

Я вызываю эту функцию для кнопки входа в событие щелчка, но когда я нажимаю эту кнопку, я получаю

com.android.volley.timeoutError

Я прочитал много решений, и я обнаружил, что проблема тайм-аута из-за проблем с брандмауэром, когда API работает в localhost. Но когда я отключаю брандмауэр, появляется другая ошибка:

com.android.volley.NoConnectionError:java.net.ConnectionException: failed to connect to /192.168.100.2(port 8000) after 2500ms:isConnected failed: ECONNREFUSED(Connection refused)

Я перепробовал множество решений здесь, и я не могу заставить свое приложение работать. Пожалуйста, помогите мне xD

1 Ответ

0 голосов
/ 12 июля 2019

Я нашел решение проблем с подключением;я пытался получить доступ со своего мобильного телефона к URL-адресу, который работал в localhost на моем компьютере через IP, где оба, мой мобильный телефон и мой компьютер, подключены, хотя это не сработало для меня, потому что запрос умирает до достижениясервер, поэтому я попробовал другой способ, вот ответ для доступа с вашего устройства к URL-адресу localhost, запущенному на вашем компьютере:

https://stackoverflow.com/a/53920173/11755598

...