标签:
在使用OkHttp前,我们需要先导入OkHttp的第三方库。
我们可以在Github上找到她的项目地址: https://github.com/square/okhttp
我们可以在Android Studio中使用Gradle, 最后效果如下:
OkHttpClient okHttpClient = new OkHttpClient();
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
Call call = okHttpClient.newCall(request);
Call对象会取走我们的 okHttpClient对象 和 我们的 request对象。
try{ Response response = call.execute(); }catch (IOException e){ e.printStackTrace(); }
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(); }
这是新手一个常见的错误。在Android中不允许任何网络的交互在主线程中进行。It disallows it to force developers to use asynchronous callbacks.(能力有限这句话不敢强译)。但是现在,我们的代码看起来看起来十分的号好!下面我们来看看如何修复这个问题。
为了修补这个问题,我们只需要让我们的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(); } } });
<uses-permission android:name="android.permission.INTERNET"/>
写完后,瞬间爽朗起来。虽然还有问题。
http://www.skholingua.com/android-basic
https://github.com/square/okhttp/wiki/Recipes
Android自学历程—手把手教你使用OkHttp(基础篇)
标签:
原文地址:http://www.cnblogs.com/ryan-ys/p/4777450.html