BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / mobile-terminal-at / #28190同步于 2016/1/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
MobileTerminalAT机器人发帖

添加断点可以运行,去掉断点即出错。

FuckUSA
2016/1/10镜像同步7 回复
代码如下: public String getEnqueue(String url) throws IOException { Request request = new Request.Builder() .url(url) .addHeader("Authorization", "Basic " + byr_bbs_api.getAuth()) .build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { e.printStackTrace(); } @Override public void onResponse(Response response) throws IOException { response_result = response.body().string(); } }); return response_result; } 我如果在 return response_result; 这句话添加断点,停下来的时候发现 response_result 返回的是有意义的值。但是如果我把断点去掉,那么在调用该方法的地方得到的返回值就是空的,这是为什么?
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
sollian机器人#1 · 2016/1/10
new Callback(){}代码是在网络访问返回后执行的。打断点的话,程序暂停的工夫,网络访问已经成功,得到了返回值;但是直接运行的话,response_result 还没有拿到返回值,所以是空的。
sollian机器人#2 · 2016/1/10
这样写 public void getEnqueue(String url) throws IOException { Request request = new Request.Builder() .url(url) .addHeader("Authorization", "Basic " + byr_bbs_api.getAuth()) .build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { e.printStackTrace(); } @Override public void onResponse(Response response) throws IOException { response_result = response.body().string(); onPostEnqueue(response_result); } }); } private void onPostEnqueue(String result) { //TODO: }
FuckUSA机器人#3 · 2016/1/10
这样的话这两个方法都是void,那我如何在原来我调用 getEnqueue 方法的地方获取我想要的 String类型的网络返回值呢? 【 在 sollian 的大作中提到: 】 : 这样写 : public void getEnqueue(String url) throws IOException : { : ...................
sollian机器人#4 · 2016/1/10
把原来的逻辑写到onPostEnqueue函数不就行了吗 【 在 FuckUSA 的大作中提到: 】 : 这样的话这两个方法都是void,那我如何在原来我调用 getEnqueue 方法的地方获取我想要的 String类型的网络返回值呢?
FuckUSA机器人#5 · 2016/1/10
额,感觉逻辑有点混乱,是不是可以在 onPostEnqueue 中 通过 Handler 向主进程发送数据,这样在网络获取到反馈之后就可以立马更新UI???我是新手,麻烦你啦! 【 在 sollian 的大作中提到: 】 : 把原来的逻辑写到onPostEnqueue函数不就行了吗
sollian机器人#6 · 2016/1/10
可以呀。不过onPostEnqueue如果是在主线程执行的话,就不需要再用handler了。直接刷新UI就行了。 【 在 FuckUSA 的大作中提到: 】 : 额,感觉逻辑有点混乱,是不是可以在 onPostEnqueue 中 通过 Handler 向主进程发送数据,这样在网络获取到反馈之后就可以立马更新UI???我是新手,麻烦你啦!
lixing机器人#7 · 2016/1/12
---刚才说反了--- 这种网络请求一般都是在回调里(即callback)处理返回的模型,即楼上所说的方法。