Retrofit如何实现同步

andy0618 2017-08-15 11:26:51
同步请求服务器数据,应该很常用吧。

比如登陆 验证登陆。要写到一个方法里,而不是直接在Activity里写吧。

public static Boolean Validate()
{

Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://test9.**.com")
.addConverterFactory(retrofit2.converter.gson.GsonConverterFactory.create()).build();

ApiService apiService = retrofit.create(ApiService.class);

Call<HashMap<String,String>> call = apiService.getIpInfo();
try
{
HashMap hmap= call.execute().body();
returnStr=hmap.get("Success").toString();
}
catch (Exception ex)
{
returnStr=ex.getMessage();
}
}

android不能同步请求服务器数据?

那如何同步?在这个Validate(),同步请求数据后,再返回数据?

...全文
630 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
andy0618 2017-08-21
  • 打赏
  • 举报
回复
感谢! 已经查资料解决。 初学Android确实有很多基础的东西要学。 现在网上的资料很多了。不象前几年,网上都找不到资料
水手辛巴 2017-08-20
  • 打赏
  • 举报
回复
同步:阻塞当前线程(需要等到服务器返回结果才会执行之后的代码) 异步:不阻塞当前线程(一般通过一个回调的匿名类来通知结果) Android不能在主线程做耗时的同步操作(主线程主要负责界面绘制,耗时操作会影响界面显示效果,而且Android也有做耗时检测) 关于你的问题?我其实没算看懂 1.你只是想做网络请求? 使用Okhttp的异步方法来做网络请求 2.你想封装模块? 在模块中使用同步(okhttp同步方法即你上面的代码),然后在封装一个异步任务执行类(例如Android的AsyncTask或者自己基于线程池做一个)。访问方式就是通过异步任务执行类去执行你这个模块的同步任务。
andy0618 2017-08-18
  • 打赏
  • 举报
回复
连点提示都没有吗?
andy0618 2017-08-15
  • 打赏
  • 举报
回复
哎,发了两个贴了,依然没有有效的回答
moonFY 2017-08-15
  • 打赏
  • 举报
回复
登录 应该首页进行验证 验证完了才去请求数据 ,, 不能一起做,一起做你如何保证数据安全

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧