android-Okhttp初步使用
自从谷歌把android的请求框架换成Okhttp后,android开发人员对其的讨论就变的越来越火热,所有咱作为一枚吊丝android程序员,也不能太落后,所以拿来自己研究一下,虽然目前项目开发用的不是okhttp,但自己提前看一点,还是对提高开发技术有好处的。
目前只要求会使用,先不要求对其原理全面的了解。
首先,要使用Okhttp,要先导入两个jar依赖包。Okhttp.jar(我目前用的是2.7.0)与okio.jar(目前1.6.0)到libs下,然后一阵噼啪build path,就行了.
本例请求的是json数据(是天气预报的json数据,大家没事时也可以用这个请求练手。),至于json数据的解析什么的,就不做了,只请求下来,然后做一个展示就行了,别的都是很简单的。哈哈哈哈。。。。
好,下面直接上代码,就是在一个布局中,设置一个button.一个textview,当点击button时,请求数据,然后展示到textview上。(本例要第二次请求才会展示到textview上,原因很好分析。)
layout布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" > <Button
android:id="@+id/bt_ok"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Okhttp请求网络"
android:gravity="center_horizontal"
android:clickable="true"
android:onClick="btOk"
/>
<TextView
android:id="@+id/tv_ok"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/bt_ok"
android:gravity="center_horizontal"
/> </RelativeLayout>
下面的是逻辑代码。
package com.example.jwwokhttp; import java.io.IOException; import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response; import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView; public class OkhttpActivity extends Activity { private OkHttpClient client;
private TextView tvOk;
private Response response;
private String responseOk; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_okhttp);
initView();
} private void initView() {
// TODO 初始化布局
tvOk = (TextView) findViewById(R.id.tv_ok);
} public void btOk(View v) throws IOException {
new Thread(new Runnable() {
//因为网络请求是耗时操作,所以要开启一个子线程,放在子线程中请求。
@Override
public void run() {
LogUtil.debug(getClass(), "btOk::::::::::::::::::");
// TODO 在线程中请求网络
client = new OkHttpClient();
//这里就开始了,实例化对象,
String url = "http://www.weather.com.cn/adat/cityinfo/101190404.html";
//请求设置
Request request = new Request.Builder().url(url).build();
try { response = client.newCall(request).execute();
if (response.isSuccessful()) {
// 返回数据
responseOk = response.body().string();
LogUtil.debug(getClass(), "网络返回数据:::::::::::"+responseOk);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}).start();
tvOk.setText(responseOk+"");
}
}
看着很简单吧。网上也有很多例子,这里只做一下简单的操作,不让自己落伍,不做深入研究。用的时候再好学习下。
android-Okhttp初步使用的更多相关文章
- Android okHttp网络请求之Json解析
前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...
- Android okHttp网络请求之Get/Post请求
前言: 之前项目中一直使用的Xutils开源框架,从xutils 2.1.5版本使用到最近的xutils 3.0,使用起来也是蛮方便的,只不过最近想着完善一下app中使用的开源框架,由于Xutils里 ...
- Android okHttp网络请求之文件上传下载
前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...
- Android okHttp网络请求之缓存控制Cache-Control
前言: 前面的学习基本上已经可以完成开发需求了,但是在项目中有时会遇到对请求做个缓存,当没网络的时候优先加载本地缓存,基于这个需求我们来学习一直okHttp的Cache-Control. okHttp ...
- Android okHttp网络请求之Retrofit+Okhttp+RxJava组合
前言: 通过上面的学习,我们不难发现单纯使用okHttp来作为网络库还是多多少少有那么一点点不太方便,而且还需自己来管理接口,对于接口的使用的是哪种请求方式也不能一目了然,出于这个目的接下来学习一下R ...
- Android OkHttp完全解析 --zz
参考文章 https://github.com/square/okhttp http://square.github.io/okhttp/ 泡网OkHttp使用教程 Android OkHttp完全解 ...
- Android OkHttp完全解析 是时候来了解OkHttp了
Android OkHttp完全解析 是时候来了解OkHttp了 标签: AndroidOkHttp 2015-08-24 15:36 316254人阅读 评论(306) 收藏 举报 分类: [an ...
- Android OkHttp文件上传与下载的进度监听扩展
http://www.loongwind.com/archives/290.html 上一篇文章介绍了用Retrofit实现文件的上传与下载,但是我们发现没办法监听上传下载的进度,毕竟我们在做开发的时 ...
- Android OkHttp与物理存储介质缓存:DiskLruCache(2)
Android OkHttp与物理存储介质缓存:DiskLruCache(2) 本文在附录文章8,9的基础之上,把Android OkHttp与DiskLruCache相结合,综合此两项技术,实 ...
- Android OkHttp(1)
Android OkHttp(1) OkHttp是一个流行的第三方开源网络请求框架,在目前的一些APP开发中比较流行.Android平台开源的网络请求框架不少,比如常见的Volley, Asyn ...
随机推荐
- html,移动端代码
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale= ...
- #if、#ifdef、#if defined之间的区别【转】
转自:http://quanminchaoren.iteye.com/blog/1870977 #if的使用说明 #if的后面接的是表达式 #if (MAX==10)||(MAX==20) code. ...
- Dynamics AX 2012 R2 报表部署权限错误
今天,Reinhard在 Deploy AX Reporting时,发生权限错误. 配置 ID: HOSTMSSQLSERVER 描述: HOST@MSSQLSERVER 默认值: True 报表服务 ...
- CI 框架访问 http://[::1]/yourproject/
Chances are you have left the base url blank/* |---------------------------------------------------- ...
- 安装ntp服务,并设置ntp客户端
1.yum安装ntp [root@localhost ~]# yum install ntp 2.修改配置文件 配置文件在/etc/ntp.conf
- php入门
最近公司招了几个应届毕业生,他们对前端的了解还挺多,但是对后端的技术一无所知,我觉得,作为一个前端攻城狮,如果你有远大的抱负,就应该雨露均沾... 今天我就跟大家讲一讲PHP最基本的入门,至少别人问起 ...
- css width="100" style ="width:100px" 区别
1. width="100"是正确的,而 width="100px"是错误的, style = "width:100px"是正确的 2. s ...
- Chrom 浏览器一些命令
https://webkit.org/build-tools/ 开发环境搭建 开源:http://www.17ky.net/kyxm/4_0_3_2_0_0/ http://www.chromium ...
- [问题2014S09] 解答
[问题2014S09] 解答 充分性: 先证明对 Jordan 块 \(J_r(1)\) 以及任意的正整数 \(m\), 均有 \(J_r(1)^m\) 相似于 \(J_r(1)\). 设 \(N ...
- js继承之call,apply和prototype随谈
在js中,call,apply和prototype都可以实现对象的继承,下面我们看一个例子: function FatherObj1() { this.sayhello = "I am jo ...