【问题标题】:Android: Volley NoConnectionErrorAndroid:凌空NoConnectionError
【发布时间】:2016-12-27 18:31:02
【问题描述】:

我正在尝试连接到 REST 服务器(我使用 Spark 创建的) 通过安卓。 我可以使用 POSTMAN(Chrome 插件)发送 POST 请求并得到什么 我想要,但是当我尝试从我的 Android 发送 POST 请求时 设备,我收到以下错误:

E/error: com.android.volley.NoConnectionError: java.net.ConnectException: failed to connect to /127.0.0.1 (port 4567) after 2500ms: isConnected failed: ECONNREFUSED (Connection refused)

这是服务器部分:

Spark.post("/up", new Route()
    {
        public Object handle(Request req, Response res)
        {
            System.out.println(req.queryParams());
            return "its something";
        }
    });

这是 Android 部分:

public void sendHTTPRequest()
{
    RequestQueue MyRequestQueue = Volley.newRequestQueue(this);

    String url = "http://127.0.0.1:4567/up";
    StringRequest MyStringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            //This code is executed if the server responds, whether or not the response contains data.
            //The String 'response' contains the server's response.
        }
    }, new Response.ErrorListener() { //Create an error listener to handle errors appropriately.
        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e("error",error.toString());
        }
    }) {
        protected Map<String, String> getParams() {
            Map<String, String> MyData = new HashMap<String, String>();
            MyData.put("Field", "Value"); //Add the data you'd like to send to the server.
            return MyData;
        }
    };
    MyRequestQueue.add(MyStringRequest);
}

我还在清单文件中添加了重要的权限。

我搜索了几个小时,但我无法解决我的问题 :( 我希望你能帮助我。 最好的祝福, 费利克斯

【问题讨论】:

    标签: android http-post android-volley


    【解决方案1】:

    127.0.0.1 是您 Android 设备上的环回 IP 地址。您需要计算机 NIC(网卡)的 IP 地址。我假设您正在某种模拟器或 Android 设备上运行。如果您的服务器在本地 Wifi 网络上运行,请检索您的 Wifi 适配器以太网适配器 的 IP 地址,然后将 127.0.0.1 替换为说地址。

    TLDR;使用您服务器的 IP 地址而不是 127.0.0.1

    Linux:ifconfig [wlan0]

    Windows:ipconfig

    编辑 2020:

    在较新版本的 Android 上,所有 HTTP 流量都必须加密,否则 android 框架会抛出错误。因此,在您的本地服务器上进行测试时,建议使用像 Ngrok 这样的隧道服务器 - 它带有免费 SSL。

    【讨论】:

    • 嗯,错误:没有路由到主机,当我使用 IP 地址时。即使使用 curl 我也无法连接到服务器。
    • 尝试通过机器的“localhost”连接到机器上的服务器
    • 是的,这有效(邮递员,正如我所写,有效),但是当我尝试从我的 android 设备向特定 url (192.168.0.81:4567) 发送 POST 请求时,我没有得到任何响应.也许是防火墙问题?我用 netstat 检查了端口,但我的机器似乎在监听 4567 端口。
    • 天哪。谢谢你。这一定是我一年中最好的面子时刻。 127.0.0.1 是模拟设备的环回。
    【解决方案2】:

    如果您在本地进行测试,请尝试检查 IP 地址(在窗口打开 cmd 运行 ipconfig) 然后再次输入您的IP地址。

    这是一个例子

    字符串 url = http://127.0.0.1:8080/user

    String url = "http://172.16.5.240:8080/user

    【讨论】:

      【解决方案3】:

      Android emulator uses 10.0.2.2 作为主机环回接口。使用它而不是模拟器本身的 127.0.0.1。

      【讨论】:

      • 是的,我用这个测试过,它可以工作!!!!!
      【解决方案4】:

      检查您的 xammp 或 wamp 连接。如果 mysql 和 apache 服务未激活,则启动所有服务并运行您的应用程序,它会给出正确的输出

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-04
        • 2018-03-15
        • 2013-10-04
        • 2021-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多