博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android网络开发之OkHttp--基本用法GET
阅读量:6690 次
发布时间:2019-06-25

本文共 3220 字,大约阅读时间需要 10 分钟。

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、访问网络不能在主线程中进行,还有不要忘记加入访问网络的权限。

7、参考博文:

http://www.2cto.com/kf/201505/397557.html

转载于:https://www.cnblogs.com/begin1949/p/4927494.html

你可能感兴趣的文章
用Python实现随机验证码
查看>>
Linux网络IP配置
查看>>
用vbscript也可以刷网站
查看>>
运维自动化之 Cobbler 系统安装使用详解
查看>>
web开发敏捷之道2nd-rails进行web开发-笔记(全)
查看>>
使用Facility:EnterpriseLibrary整合进Castle
查看>>
CITRIX XenDesktop与无盘工作站
查看>>
SQL Server 2008和2008 R2评估版过期的解决办法 .
查看>>
linux shell下转换unix时间
查看>>
Exchange Server邮件存储系统(原理篇)
查看>>
【协议学习】PPPoE学习文档
查看>>
【实战】烂泥:关于佳能IR2320N网络打印机的安装域使用
查看>>
Angular2 小贴士-多级注入器
查看>>
数据恢复全解析
查看>>
处理windows 2008x64平台exchange 2010 sp1打完系统补丁后,控制台无法打开
查看>>
改良版本mysqldump来备份MYSQL数据库
查看>>
域账号加到本机管理员组和本机Power Users组
查看>>
Java多线程初学者指南(6):慎重使用volatile关键字
查看>>
dd for windows
查看>>
Skype for Business Server 2015-12-WAP-发布-2-邮件服务器
查看>>