Android OkHttp3同步请求问题

public static String getAccessToken() {
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder()
                .url("https://m.baidu.com")
                .build();
        String result = null;
        try {
            Response response = client.newCall(request).execute();
            result = response.body().string();
        } catch (IOException e) {
            e.printStackTrace();
            result = e.toString();
        }

        return result;
    }

上面是一段简单的OkHttp同步请求。需要把请求结果返回回去,结果直接蹦了。

img

看来是线程问题,我加个线程进去后直接报错,线程不能result值回去

img

你这是空指针哦 在你的Common类里面350行看下你用到的Resources

1.okHttp 同步请求需要放在线程中,否则编译不通过,网络请求需要在子线程中的发起
2.异常问题是空指针导致的,logger 日志已经明确告知了

在HomeFragment中 initView()调用Common.xxx方法,第350 的 xx.getResource() 这里的xx对象为null

img

线程是不能直接return,但是可以用回调把结果发送到主线程
当然多线程更新UI可能涉及到Handler