首页 > 解决方案 > 为什么我的带有 android volley 的 http post 请求会引发错误(localhost)?

问题描述

我正在开发一个 android studio 项目,我在尝试使用 volley 库进行发布请求时遇到了一些问题。我已经用邮递员测试了我的 API 并且一切正常,所以问题出在客户端部分。

我已经在我的 android 清单中添加了互联网权限:

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

这是我的代码,我创建了一个名为“login”的函数,它接收两个参数,它们是我想通过 post 方法发送的数据:

     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

标签: javaandroidandroid-studiohttp-postandroid-volley

解决方案


我找到了连接问题的解决方案;我一直在尝试通过我的手机和我的计算机都连接的 IP 从我的手机访问在我的计算机上的 localhost 中运行的 url,尽管这对我不起作用,因为请求在到达之前就终止了服务器,所以我尝试了另一种方式,这是从您的设备访问您计算机中运行的 localhost 的 url 的答案:

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


推荐阅读