vute 2019-06-01 19:59 采纳率: 100%
浏览 3883
已采纳

Android开发(使用Java)中 client.newCall(request).execute() 语句永久阻塞的问题

小白,开发安卓的小型app,希望使用http的post方法向云端服务器发送json文件,然后获取云端返回的json,以此实现相关操作(比如向服务器发送包含用户名和密码的json文件,然后接收返回的json文件,解析,决定是否允许登录)

由于楼主是学生,暂时付不起云主机的钱,所以和同伴一起在局域网内建立了一个服务器用来前期进行调试。可是在编写android端代码的时候,遇到了问题,就是老是阻塞在一个地方:execute()

下面是代码:

   //访问云端服务器,获得登录授权
    private boolean getAuthorization() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    //创建Client对象
                    Log.d(debugTag, "创建Client对象");
                    OkHttpClient client = new OkHttpClient();
                    //创建request对象
                    Log.d(debugTag, "创建request对象");
                    Request request = new Request.Builder()
                            .url("http://10.0.2.2/data")
                            .build();
                    //创建response对象
                    Log.d(debugTag, "创建response对象");
                    Response response = client.newCall(request).execute();
                    //获取返回值
                    Log.d(debugTag, "获取返回值");
                    String data = response.body().string();
                    //打印
                }catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }).start();
        return false;
    }

这里同伴不在身边,所以就暂时在我电脑上用Apache搭了一个localhost

文件结构:

图片说明

data文件的内容:{ "UserName":"John" , "PassWord":"123123" }

用电脑访问的结果:

图片说明

用Postman访问结果:
图片说明
用手机模拟器的浏览器访问结果:

图片说明

都是没有问题的
但是用我自己写的代码访问就不行(上面代码在Android Studio的日志窗口的运行结果):
图片说明

可以发现只运行到了“创建response对象”那一步,之后的execute()永远阻塞住了

但是改一下上面代码的url,改成"https://api.github.com/markdown/raw"
运行就正常了!

图片说明
我的电脑防火墙已经全部关闭

  • 写回答

3条回答 默认 最新

  • vute 2019-06-02 14:51
    关注

    好吧,我们组这几天时间特紧,又不是这个专业的,没有必要花太大功夫。我就自问自答取消这个问题吧。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?