Android网络开发之OkHttp--基本用法GET
1、OkHttp框架使用了OkIo.jar包,不要忘记添加。
2、对于Request对象是如何实例化的,大家可以参考--java builder设计模式
http://www.cnblogs.com/moonz-wu/archive/2011/01/11/1932473.html
3、通过同步GET访问网络,主要分为四步:
(1)、声明并实例化一个OkHttpClient对象。
(2)、声明并实例化一个Request对象,并设置URL等参数。
(3)、执行Request请求,并获得一个Response对象。
(4)、根据Response的isSuccessful()方法,判断是否成功,然后从Response对象中获取返回数据。
4、通过异步GET访问网络和同步GET是一样的,不过处理返回数据实在CallBack接口中实现的。
5、
public class GetActivity extends Activity {
private final OkHttpClient client = new OkHttpClient(); private TextView mTvGet; private String result; @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_get); initView(); new Thread(getThread).start();
} public void initView() {
mTvGet = (TextView) findViewById(R.id.tv_get_show);
} private Runnable getThread = new Runnable() {
public void run() {
try {
getRun2();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
};
}; /** 同步GET */
public void getRun() throws Exception {
// 实例化请求对象
Request request = new Request.Builder().url("https://www.baidu.com/").build();
// 得到返回对象
Response response = client.newCall(request).execute(); // 判断返回对象是否成功
if (!response.isSuccessful()) {
result += "请求出错!";
} else {
// 输出Headers
Headers responseHeaders = response.headers();
for (int i = 0; i < responseHeaders.size(); i++) {
result += responseHeaders.name(i) + "" + responseHeaders.value(i);
}
// 输出Body
result += response.body().string();
} getHandler.sendEmptyMessage(0);
} /** 异步GET */
public void getRun1() throws Exception {
Request request = new Request.Builder().url("https://www.baidu.com/").build();
client.newCall(request).enqueue(new Callback() { @Override
public void onResponse(Response response) throws IOException {
// 判断返回对象是否成功
if (!response.isSuccessful()) {
result += "请求出错!";
} else {
// 输出Headers
Headers responseHeaders = response.headers();
for (int i = 0; i < responseHeaders.size(); i++) {
result += responseHeaders.name(i) + "" + responseHeaders.value(i);
}
// 输出Body
result += response.body().string();
} getHandler.sendEmptyMessage(0);
} @Override
public void onFailure(Request arg0, IOException e) {
// TODO Auto-generated method stub
e.printStackTrace();
}
});
} private Handler getHandler = new Handler() {
public void handleMessage(Message msg) {
mTvGet.setText(result);
};
};
}
6、访问网络不能在主线程中进行,还有不要忘记加入访问网络的权限。
<uses-permission android:name="android.permission.INTERNET" />
7、参考博文:
http://www.2cto.com/kf/201505/397557.html
Android网络开发之OkHttp--基本用法GET的更多相关文章
- Android网络开发之OkHttp--基本用法POST
1.OkHttp框架使用了OkIo框架,不要忘记下OkIo.jar 2.通过POST访问网络,和通过GET访问网络基本相同,多了设置请求参数的过程.主要分为五步: (1).声明并实例化一个OkHttp ...
- Android网络开发之Volley--Volley基本用法ImageRequest(三)
1.ImageRequest用法和StringRequest一样,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置ImageRequest对象参数,并将ImageReque ...
- Android网络开发之Volley--Volley基本用法JsonObjectReques(二)
1.JsonObjectRequest用法 用法和StringRequest基本相同,主要分为3步: (1).实例化一个RequestQueue对象 (2).设置JsonObjectRequest对象 ...
- Android网络开发之Volley--Volley基本用法StringRequest(一)
1.StringRequest用法 主要分为3步: (1).实例化一个RequestQueue对象 (2).设置StringRequest对象参数,并将StringRequest对象加入Request ...
- Android网络开发之OkHttp--基本用法实例化各个对象
1.实例化OkHttpClient对象,OkHttpClient包含了以下属性,以及set()和get()方法.但并没有包含具体的执行方法,详情见源码. //实例化OkHttpClent对象 priv ...
- Android 网络开发之WIFI
WIFI就是一种无线联网技术,常见的是使用无线路由器.那么在这个无线路由器的信号覆盖的范围内都可以采用WIFI连接的方式进行联网.如果无线路由器连接了一个ADSL线路或其他的联网线路,则又被称为&qu ...
- Android网络开发之用tcpdump抓包
Android开发过程中,当涉及到网络通信的时候,有一些字段须要抓包获取.我之前由于SSDP设备发现的包头格式没有写对,经过抓包分析和标准包头对照发现了这个困扰我非常久的问题.总之,掌握在Androi ...
- Android网络开发之Volley--Volley自定义Request
1.自定义一个解析Json的Request,这里使用JackSon框架来解析Json.你也可以自定义一个解析XML的Request,或者使用FastSon来解析Json. 2.我们首先来看一下Stri ...
- Android网络开发之WIFI
WIFI全称Wireless Fidelity, 又称802.11b标准.WIFI联盟成立于1999年,当时的名称叫做Wireless Ethernet Compatibility Alliance( ...
随机推荐
- 开源日志系统比较:scribe、chukwa、kafka、flume
1. 背景介绍 许多公司的平台每天会产生大量的日志(一般为流式数据,如,搜索引擎的pv,查询等),处理这些日志需要特定的日志系统,一般而言,这些系统需要具有以下特征: (1) 构建应用系统和分析系统的 ...
- C# WebBrowser函数互相调用
在使用C#开发winform程序过程中,我们经常会碰到嵌入了一个WebBrowser的浏览器控件.很多时候,我们需要在程序里控制网页的显示方式,或者调用网页当中的某个JS函数,反过来,也有可能网页也需 ...
- shell:crontab
crontab */1 * * * * (cd /home/q/system/project; /usr/bin/lockf -t 0 /tmp/discuz_bbs_audit.lock /usr/ ...
- csdn的调查问卷,好多都不懂哈
http://bss.csdn.net/cview/reg/?project_id=2412&identy_id=1538
- 【记录】ACM计划
ACM进阶计划ACM队不是为了一场比赛而存在的,为的是队员的整体提高.大学期间,ACM队队员必须要学好的课程有:lC/C++两种语言l高等数学l线性代数l数据结构l离散数学l数据库原理l操作系统原理l ...
- boost ASIO实例
client端代码 #include <iostream> #include <boost/asio.hpp> #include <boost/bind.hpp> ...
- 第四届河南省省赛 走迷宫 二分+DFS
题目思路:使用二分查找路径中最大值和最小值之间的差值,从而确定出一组minn和maxn,对此组的minn和maxn经行DFS,如果可以找到一条路径,其中的最大值,最小值在minn~maxn的范围内,则 ...
- 10款超酷实用的jQuery焦点图赏析及源码
1.jquery整屏滚动插件Scrollify Scrollify是一个jQuery插件协助整屏滚动和顺利拍摄部分.完全可配置和优化. 在线演示 源码下载 2.jquery实现网易邮箱页面插件full ...
- jquer 带左右按钮滚动图片 点击显示大图
<style> ul{ list-style:none; padding:0px; margin:0px;} li{ list-style:none; padding:0px; margi ...
- VHD进阶:差分VHD备份系统
VHD进阶:差分VHD备份系统 一.创建虚拟磁盘 方法1:图形界面创建 1.打开磁盘管理器(运行diskmgmt.msc),在“磁盘管理”上点击右键,“创建VHD”,类型选择VHD,动态扩展或者固定大 ...