简介
okhttp是一个第三方类库,用于android中请求网络。这是一个开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司贡献(该公司还贡献了Picasso和LeakCanary) 。用于替代HttpUrlConnection和Apache HttpClient(android API23 里已移除HttpClient)。
- 官网网址:OKHttp官网
- OkHttp github地址:https://github.com/square/okhttp
- OkHttp jar包下载: https://search.maven.org/remote_content?g=com.squareup.okhttp3&a=okhttp&v=LATEST
Android studio工程依赖:
testImplementation 'com.squareup.okhttp3:mockwebserver:3.11.0'
同步请求方式(get请求)
步骤一 创建请求接口网址
我使用了http://www.sosoapi.com/ 来创建了一个访问接口,用来验证OkHttp是否请求成功。如果你有兴趣了解,可以直接进入网站,里面有详细的demo演示。后续我将不在赘述这段。
我在请求响应里添加了一段JSON数据:
[
{
"name": "get测试",
"content": "你成功获取了数据"
}
]
步骤二 创建JSON解析方法
这里我写一下解析JSON数据的方法,来解析get或者post得到的JSON数据。后续我将不在赘述这段。
/**
* JSON 解析方法
* @param jsonData
* @return
*/
public String readJSONContent(String jsonData){
try {
StringBuffer sb = new StringBuffer();
JSONArray jsonArray = new JSONArray(jsonData);
for (int i=0;i<jsonArray.length();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
sb.append(jsonObject.getString("name")+"\n");
sb.append(jsonObject.getString("content")+"\n");
}
return sb.toString();
} catch (JSONException e) {
Log.e("JSONException错误", "readContent: "+e.toString());
return e.toString();
}
}
步骤三 创建OkHttp 同步请求
/**
* 同步请求
*/
public void synchro(){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
OkHttpClient okHttpClient = new OkHttpClient();//创建单例
Request request = new Request.Builder()//创建请求
.url("http://www.sosoapi.com/pass/mock/12003//test/gettest")
.build();
try {
Response response = okHttpClient.newCall(request).execute();//执行请求
mContent = response.body().string();//得到返回响应
runOnUiThread(new Runnable() {
@Override
public void run() {
mtextView.setText(readJSONContent(mContent));
}
});
} catch (IOException e) {
e.printStackTrace();
Log.e("OkHttpActivity", e.toString() );
}
}
});
thread.start();
}