为什么我的带有Android Volley的HTTP发布请求会引发错误(localhost)?

时间:2019-07-08 16:55:31

标签: java android android-studio http-post android-volley

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

我已经在我的android清单中添加了Internet权限:

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

这是我的代码,我创建了一个名为“登录”的函数,该函数接收两个参数,这些参数是我想通过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时防火墙出现了问题。 但是当我禁用防火墙时,会抛出另一个错误:

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 :(得分:0)

我找到了解决连通性问题的方法;我一直试图通过手机访问我的手机通过计算机连接到IP的url,该URL在我的计算机上的本地主机中运行,尽管这对我不起作用,因为请求在到达服务器,所以我尝试了另一种方法,这是从您的设备访问计算机中运行的localhost URL的答案:

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