Android自学历程—手把手教你使用OkHttp(基础篇)

安装

在使用OkHttp前,我们需要先导入OkHttp的第三方库。

我们可以在Github上找到她的项目地址: https://github.com/square/okhttp

我们可以在Android Studio中使用Gradle, 最后效果如下:

      

       

测试使用我们的OKHttp第三方库

1.第一步我们需要去创建一个 OKHttpClient 对象

OkHttpClient okHttpClient = new OkHttpClient();

2.下一步我们还需要一个 Request 对象,她可以已如下方式被创建

Request request = new Request.Builder()
                                    .url(requestUrl)
                                    .build(); 

requestUrl是一个字符串变量代表这个URL是为了JSON请求(The requestUrl is a String variable representing the Url for the JSON request.)

在这个测试中,我们将会使用如下的URl:http://iheartquotes.com/api/v1/random?format=json

3.再下一步我们需要实例化一个 Call 对象

Call call  = okHttpClient.newCall(request);

Call对象会取走我们的 okHttpClient对象 和 我们的 request对象。

4.在实例化Call对象后,我们现在可以 Execute(执行)她。Executing一个Call后将会返回一个 Response,并且会抛出一个 IOException的异常,这就是为什么们会用一个try,catch块包裹她。

try{
        Response response = call.execute();
}catch (IOException e){
        e.printStackTrace();
}

5.执行完我们的Call后,我们需要通过使用 response.isSuccessful()来检查Call对象是否执行成功,

通过response.isSuccessful()的返回值为true或者是false来判断。

这我们仅仅是一个测试,如果Call成功的话,我们将会通过Log来打印我们的response。

try{
        Response response = call.execute();
        if(response.isSuccessful()){
                //The call was successful.print it to the log
                Log.v("OKHttp",response.body().string());
        }
    }catch(IOException e){
        e.printStackTrace();
}

6.测试Code!

这是新手一个常见的错误。在Android中不允许任何网络的交互在主线程中进行。It disallows it to force developers to use asynchronous callbacks.(能力有限这句话不敢强译)。但是现在,我们的代码看起来看起来十分的号好!下面我们来看看如何修复这个问题。

7.Fix issue

为了修补这个问题,我们只需要让我们的Call执行在非主线程内,所以利用一个 asynchronous callback(异步的callBack)。

让我们call异步的方法是通过调用我们Call对象的 enqueue()方法。

call.enqueue(new Callback()) {

        @Override
        public void onFailure( Request request, IOException e ) {

        }

        @Override
        public void OnResponse( Response response) throws IOException {
                try {
                        if(response.isSuccessful()){
                            //The call was successful. print it to the log
                            log.v("OKHttp",response.body.string());
                         }
                }catch (IOException e) {
                    e.printStackTrace();
                }
        }
});

8.在我们再次执行我们的code之前,我们还需要再改一改。如果我们想要现在执行她,我们可能还会接收到错误的提示,因为我们应用的程序没有得到相应的相应的网络权限。所以我们需要再AndroidManifest.xml中添加应用权限。

<uses-permission android:name="android.permission.INTERNET"/>

9.当我们执行完code后,我们将接受到如下的log输出:

10.This means, we are now able to execute asynchronous network calls and use the data inside the callback method, when it is ready!

写完后,瞬间爽朗起来。虽然还有问题。

译文来自:https://gsaar.me/tutorial/android-tutorial-part-5-using-okhttp/

http://www.skholingua.com/android-basic

https://github.com/square/okhttp/wiki/Recipes

时间: 09-01

Android自学历程—手把手教你使用OkHttp(基础篇)的相关文章

深入理解iPhone数据持久化(手把手教你iphone开发 – 基础篇)

在所有的移动开发平台数据持久化都是很重要的部分:在j2me中是rms或保存在应用程序的目录中,在symbian中可以保存在相应的磁盘目录中和数据库中.symbian中因为权限认证的原因,在3rd上大多数只能访问应用程序的private目录或其它系统共享目录.在iphone中,apple博采众长,提供了多种数据持久化的方法,下面笔者会逐个进行详细的讲解. iphone提供的数据持久化的方法,从数据保存的方式上讲可以分为三大部分:属性列表.对象归档.嵌入式数据库(SQLite3).其他方法. 一.属

Android开发之手把手教你写ButterKnife框架(二)

欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52664112 本文出自:[余志强的博客] 上一篇博客Android开发之手把手教你写ButterKnife框架(一)我们讲了ButterKnife是什么.ButterKnife的作用和功能介绍以及ButterKnife的实现原理. 本篇博客主要讲在android studio中如何使用apt. 一.新建个项目, 然后创建一个module名叫processor 新建m

ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map

原文地址: ArcGIS Runtime for Android开发教程V2.0(3)基础篇---Hello World Map - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/8124005 通过上面章节,我们已经了解如何配置一个ArcGIS Runtime for Android开发环境,下面我们将介绍如何使用Eclipse创建一个ArcGIS移动项目Hello W

ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView

原文地址: ArcGIS Runtime for Android开发教程V2.0(4)基础篇---MapView - ArcGIS_Mobile的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/arcgis_mobile/article/details/8147328 MapView是ArcGIS Runtime SDK forAndroid的核心组件,通过MapView可以呈现地图服务的数据,并且在MapView中定义了丰富的属性.方法和事件,用户通过Map

ArcGIS Runtime for Android开发教程V2.0(8)基础篇-----地图事件

转自:http://blog.csdn.net/arcgis_mobile/article/details/8263283 ArcGIS Runtime sdk for Android为我们提供了丰富的事件监听器,本节将主要介绍我们经常使用的监听器,并且介绍通过这些监听器可以实现哪些功能,在下面的监听器中只有MapOnTouchListener是类,其他皆为接口类型,如图所示: 1.1 MapOnTouchListener MapOnTouchListener是MapView最为重要的监听器之一

Android自学历程—OkHttp的基本使用

前段时间学习线程,想通过子线程获取网络图片,进而更新主UI界面的学习.发现大部分的Demo都是基于HttpClient的使用,但google似乎削弱了HttpClient,我甚至只能找到HttpURLConnection的相关类.没办法,只能寻找新的途径,这就是这篇译文的由来. 开始之前: 1.下载最新版本的OKHttp的Jar包,和Okio的Jar包. 2.在Android studio 中,导入Jar包. 最快捷的方式是:(但是我有时候我这样操作没用,不知道问什么,之后乖乖下载再导入Jar包

Android自学历程—围住神经猫开发

学习核心内容: 1. 学会SurfaceView的绘图技巧. 2. 掌握神经猫的游戏逻辑设计. 第一阶段主要完成内容: 并且创建游戏所需的类,搭建基本的代码结构. 创建一个二维数组,用于保存游戏场景,并且将场景初始化. SurfaceView中根据场景数据,在界面中绘制点阵. 先上代码 1 package com.ryan.catchcrazycat; 2 3 /** 4 * Created by air on 15-8-1. 5 */ 6 public class Dot { 7 8 /* 9

Android自学历程—Surfaceview整理总结

这里借鉴了不少博主的劳动成果,先表示感谢.(一定要自己整理才能看的进去--) 其实这里还有个疑惑,SurfaceView与View的区别,以及如何选择使用. 涉及到画面更新的需求.一种是主动更新,另一种是被动更新.类似棋牌类游戏,需要被动的点击去触发它,完全可以采用View. 而比如罗盘,需要一直在旋转,这个时候需要一个线程去处理它.此种情况选用SurfaceView 先看看官方的解释 SurfaceView的API介绍 Provides a dedicated drawing surface

Android自学历程—Material Design的Tabs

好几天没写博客了,今天给大家带来一篇不错的译文.我照着练习了段时间,还有买了新书<android开发艺术探索>,如果好的话给大家分享分享. 用Android Material Design的方式处理Tabs Android Design Support Library这个类可以使我们更加向后兼容Androoid 2.1,去使用material design的组建.在Design support Library中,一些组建如:navigation drawer, floating action