之前一直用的是HttpURLConnection,实在是麻烦,最近准备把项目换成OkHttp的,在这里简要记录一下大概使用流程,原理等会在后面博客介绍。
首先导入包,添加依赖
compile 'com.squareup.okhttp3:okhttp:3.9.0'
随便导入的,应该不是最新版,接下来就可以在代码中应用了。
首先需要创建OkHttpClient的实例:
OkHttpClient client = new OkHttpClient();
这没什么好说的,正常流程,接下来我们会发起Http请求,这个时候就需要创建Request对象:
Request request = new Request.Builder().build();
上面这一串代码只是创建了一个空的Request对象,没有作用的,在实际应用中,我们会在build()方法之前添加很多其他的方法来实现我们的功能,比如请求网络地址这一部分,添加url()方法:
Request request = new Request.Builder().
url("https://devapi.qweather.com/v7/air/now?location=**&key=**")
.build();
这是我获取和风天气的网址url,现在我们已经做好了前期准备,网址目标等都已经设置好了,那么就应该发送请求以及接收数据了,我们调用OkHttpClient的newCall()方法,创建一个新的Call对象,传入设置好的参数,并调用它的execute()方法完成发送请求以及接收数据:
Response response = client.newCall(request).execute();
我们使用了Response来接收数据,把他变成String变量来方便我们解析:
String data = response.body().string();
这样我们的流程就已经走完了,调用API三方接口的时候都可以这样使用,这属于GET方法,如果有数据需要POST方法的话,会有额外这样几步:
RequestBody requestBody = new FormBody.Builder()
.add("name" , "admin")
.add("password" , "123")
.build();
Request request = new Request.Builder()
.url("***")
.post(requestBody)
.build();
这样就好了。