Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android仿真器与本地api通信_Java_Android - Fatal编程技术网

Java Android仿真器与本地api通信

Java Android仿真器与本地api通信,java,android,Java,Android,在Android应用程序上工作,我有一个本地express api运行在: http://localhost:5555 试图访问路由/test,但这在android emulator中似乎不起作用 我已经发现我需要将url更改为http://10.0.2.2:5555/test 但由于某种原因,我只得到了一个错误 Api路线 router.post('/test', function (req, res, next) { console.log("recived request");

在Android应用程序上工作,我有一个本地express api运行在:

http://localhost:5555
试图访问路由
/test
,但这在android emulator中似乎不起作用

我已经发现我需要将url更改为
http://10.0.2.2:5555/test

但由于某种原因,我只得到了一个错误

Api路线

router.post('/test', function (req, res, next) {
  console.log("recived request");
  res.sendStatus(200);
});
    try {
        DefaultHttpClient client = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost("http://10.0.2.2:5555/test");
        HttpResponse response = client.execute(httpPost);
        System.out.println(response.getStatusLine().toString());
    } catch (IOException e) {
        System.err.println(e.getMessage());
    } catch (Exception e) {
        System.err.println(e.getMessage());
    }
清单

<uses-permission android:name="android.permission.INTERNET" />
没有编译错误,尽管Android表示不推荐使用apache.http

预期的api响应(使用java控制台应用程序测试)

使用带有仿真器的代码时出现实际错误

System.err: null
模拟器是否使用了我需要注意的某种防火墙/代理?有人经历过同样的结果吗

我希望我把问题说清楚,如果没有,我很乐意提供更多的细节

提前谢谢

编辑

<uses-permission android:name="android.permission.INTERNET" />
已尝试使用libs,但均为null

  • OkHttp
  • 改造
  • 截击

我不认为
response.getStatusLine()
是您想要服务器的文本响应时应该打印的内容。您能够从emulator的浏览器访问相同的url吗?也许您应该测试get请求而不是post请求,并使用像@JimVercoelen这样的未弃用库不要打印异常消息。许多异常没有消息,因为它们的类名本身就是整个消息。通常,您希望记录整个堆栈跟踪:类名、消息以及有关调用堆栈上每个方法的信息。但是,至少,到
System.err.println(e)这样您就可以在消息中获得类名。此外,还可以使用来捕获(模拟的)android设备和服务器之间的网络流量,以查看是否有任何东西正在到达服务器,如果有,它将如何响应。您需要确保您的服务器正在侦听环回以外的接口上的请求,并且它将接受来自设备连接的IP地址的连接。