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

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 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题