前言
平时为了做些安卓测试,我也会写一下后端的东西。已经有好长一段时间没写过服务端相关的内容了,今天看着郭霖的《第一行代码》,我把一个xml资源部署到了tomcat服务器上,在浏览器上是可以打开
http://localhost:8081/test/get_data.xml
这个地址进行访问的,但是在AS里面使用这个地址却报了如下的序错误(删减了部分错误内容):
java.net.ConnectException: Failed to connect to localhost/127.0.0.1:8081
Caused by: java.net.ConnectException: failed to connect to localhost/127.0.0.1 (port 8081) from /127.0.0.1 (port 36838) after 10000ms: isConnected failed: ECONNREFUSED (Connection refused)
我使用了OkHttpClient,部分代码如下:
val okhttpClient= OkHttpClient()
val request= Request.Builder()
.url("http://localhost:8081/test/get_data.xml")
.build()
其实,说白了,就是地址写错了,可不能够直接从浏览器的地址复制过来。你电脑浏览器能访问,不代表AS中的模拟器能够访问上面的地址。
解决方法
方法1
按照《第一行代码》里面写的,把地址改成http://10.0.2.2,这个地址对于模拟器来说,对应的就是电脑本地ip地址,完整链接就是http://10.0.2.2/test/get_data.xml
方法2
其实还是改地址,如果是windows系统,按住win+R,输入cmd后按回车,在命令窗口输入ipconfig查看你电脑的ip地址,下面的192.168.0.103就是我想要的ip地址。所以,把访问链接改成http://192.168.0.103:8081/test/get_data.xml也是可以的。