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( ...
随机推荐
- Storm官方文档翻译之在生产环境集群中运行Topology
在进群生产环境下运行Topology和在本地模式下运行非常相似.下面是步骤: 1.定义Topology(如果使用Java开发语言,则使用TopologyBuilder来创建) 2.使用StormSub ...
- C# Memcached缓存
net/c#分布式缓存系统Memcached简介与实践--非常好 缘起: 在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是 ...
- php数据排序---array_multisort
PHP代码 <?php $ar1 = array(10, 100, 100, 0); $ar2 = array(1, 3, 2, 4); array_multisort($ar1, $ar2); ...
- NSArray的排序问题
1.关于NSArray的排序问题,首先想到的是不是冒泡排序,插入排序....... oc中的NSArray有一种更简单的方式: 例如: NSArray *stringArray=[NSArray ar ...
- TOMCAT 优化设置
增加JVM堆内存大小修复JRE内存泄漏线程池设置压缩数据库性能调优Tomcat本地库 第1步 – 提高JVM栈内存Increase JVM heap memory 你使用过tomcat的话,简单的说就 ...
- vs找不到svn源代码管理插件之我见
使用svn要安装两个文件,一个客户端:TortoiseSVN-1.8.msi,一个插件:AnkhSvn-2.5.msi:两个都安装好之后,在vs的tool(工具)选项卡中,选择自定义,然后选择sour ...
- linq any() all() 返回true 或者false
一.any()只要有一个符合条件就返回true static void Main(string[] args) { //any 有符合条件的就返回true ,,,,,,,,,}; ); Console ...
- windowSoftInputMode键盘把输入框挡住了
android:windowSoftInputMode="stateHidden|adjustResize" >
- J2EE判断重复的数据
import java.util.ArrayList; import java.util.List; import org.junit.Test; /** * 判断重复的数据 * @author Ya ...
- 判断是ios还是android
//判断是ios还是androidvar system;var ua = navigator.userAgent.toLowerCase(); if (/iphone|ipad|ipod/.test( ...