okhttp框架学习
来源:互联网 发布:淘宝想开情趣用品店 编辑:程序博客网 时间:2024/06/05 02:47
集成和代码:
compile 'com.squareup.okhttp3:okhttp:3.4.1'
//默认是get请求
public class HttpUtil { public static void sendOkHttpRequest(String address, okhttp3.Callback callback) { OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url(address).build(); client.newCall(request).enqueue(callback); }}
/** * 根据天气id请求城市天气信息。 */ public void requestWeather(final String weatherId) { String weatherUrl = "https://api.heweather.com/x3/weather?cityid=" + weatherId + "&key=bc0418b57b2d4918819d3974ac1285d9"; HttpUtil.sendOkHttpRequest(weatherUrl, new Callback() { @Override public void onResponse(Call call, Response response) throws IOException { final String responseText = response.body().string(); final Weather weather = Utility.handleWeatherResponse(responseText); runOnUiThread(new Runnable() { @Override public void run() { if (weather != null && "ok".equals(weather.status)) { SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(WeatherActivity.this).edit(); editor.putString("weather", responseText); editor.apply(); showWeatherInfo(weather); } else { Toast.makeText(WeatherActivity.this, "获取天气信息失败", Toast.LENGTH_SHORT).show(); } swipeRefresh.setRefreshing(false); } }); } @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(WeatherActivity.this, "获取天气信息失败", Toast.LENGTH_SHORT).show(); swipeRefresh.setRefreshing(false); } }); } }); loadBingPic(); } /** * 加载必应每日一图 */ private void loadBingPic() { String requestBingPic = "http://guolin.tech/api/bing_pic"; HttpUtil.sendOkHttpRequest(requestBingPic, new Callback() { @Override public void onResponse(Call call, Response response) throws IOException { final String bingPic = response.body().string(); SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(WeatherActivity.this).edit(); editor.putString("bing_pic", bingPic); editor.apply(); runOnUiThread(new Runnable() { @Override public void run() { Glide.with(WeatherActivity.this).load(bingPic).into(bingPicImg); } }); } @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); } }); }
runOnUiThread(即保证在ui线程中更新数据):
把更新ui的代码创建在Runnable中,然后在需要更新ui时,把这个Runnable对象传给runOnUiThread(Runnable)。 这样Runnable对像就能在ui线程中被调用。如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI线程。
参考文章
http://blog.csdn.net/itachi85/article/details/51190687
http://blog.csdn.net/jdfkldjlkjdl/article/details/73824677
http://blog.csdn.net/donkor_/article/details/53589316
阅读全文
0 0
- Android OkHttp 框架学习
- okhttp框架学习
- okhttp,Android网络框架学习之OKHttp
- Android 网络框架OKHttp学习
- Android框架学习笔记01Okhttp框架
- Android 网络框架学习之OKHttp
- okhttp学习笔记--网络框架封装
- android 网络框架学习(okhttp,retrofit,rxjava)
- Android网络框架学习之OkHttp
- oKhttp框架
- OkHTTP框架
- OKHttp框架
- OkHttp框架
- OkHttp框架
- OKHttp框架
- Android 开发框架之okhttp 网络框架的学习
- Android学习笔记02——OKHttp网络框架01
- Android 的OkHttp 网络请求框架的学习封装
- Android4.4上下如何根据uri获取文件的真是路径
- Maximum Subarray(leetcode)
- Python Flask框架连接Mysql 学习笔记
- 字符串输入的一些陷阱
- 账户结构,推广计划,推广单元
- okhttp框架学习
- maven依赖json-lib的jar包导入失败
- [unity3d] 模型XRay效果实现
- 初窥ajax(一) ——封装ajax
- Class文件结构
- Android自定义view双缓存技术
- HTML/CSS导航菜单-水平菜单的制作
- 设计模式应用 生成器模式
- ZigBee_CC2530中断的使用