博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ok框架简单应用
阅读量:4693 次
发布时间:2019-06-09

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

package com.example.day1; import android.os.Handler; import android.os.Looper; import java.io.IOException; import java.util.Map; import java.util.concurrent.TimeUnit; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; //import okhttp3.logging.HttpLoggingInterceptor; public class OkhttpUtils {
private static OkhttpUtils mOkhttpUtils = null; private final OkHttpClient mOkHttpClient; private Handler mHandler = new Handler(Looper.myLooper()); public OkhttpUtils() {
// //日志拦截器 // HttpLoggingInterceptor httpLoggingInterceptor = new HttpLoggingInterceptor(); // //设置日志拦截器打印日志的级别 // httpLoggingInterceptor.setLevel(HttpLoggingInterceptor.Level.BODY); //构造一个OkHttpClient对应 mOkHttpClient = new OkHttpClient.Builder() .connectTimeout(5, TimeUnit.SECONDS) .readTimeout(5, TimeUnit.SECONDS) .writeTimeout(5, TimeUnit.SECONDS) // .addInterceptor(httpLoggingInterceptor) .build(); } public static OkhttpUtils getInstance() {
if (mOkhttpUtils == null) {
synchronized (OkhttpUtils.class) {
if (mOkhttpUtils == null) {
mOkhttpUtils = new OkhttpUtils(); } } } return mOkhttpUtils; } public void doGet(String url, final IOkhttpCallBack iOkhttpCallBack) {
Request request = new Request.Builder() .url(url) .build(); //根据请求Request构造一个http请求 final Call call = mOkHttpClient.newCall(request); //执行异步请求 call.enqueue(new Callback() {
@Override public void onFailure(Call call, final IOException e) {
mHandler.post(new Runnable() {
@Override public void run() {
if (iOkhttpCallBack != null) {
iOkhttpCallBack.onFailure(e); } } }); } @Override public void onResponse(Call call, Response response) throws IOException {
if (response != null && response.isSuccessful()) {
//通过获取响应体之后,通过string方法获取json字符串 final String json = response.body().string(); mHandler.post(new Runnable() {
@Override public void run() {
if (iOkhttpCallBack != null) {
iOkhttpCallBack.onSuccess(json); } } }); return; } mHandler.post(new Runnable() {
@Override public void run() {
if (iOkhttpCallBack != null) {
iOkhttpCallBack.onFailure(new Exception("服務器異常")); } } }); } }); } public void doPost(String url, Map
paramsMap, final IOkhttpCallBack iOkhttpCallBack) {
//构造请求体 FormBody.Builder builder = new FormBody.Builder(); //循环map添加请求参数 for (Map.Entry
entry : paramsMap.entrySet()) {
builder.add(entry.getKey(), entry.getValue()); } FormBody formBody = builder.build(); Request request = new Request.Builder() .url(url) .post(formBody) .build(); //根据请求Request构造一个http请求 final Call call = mOkHttpClient.newCall(request); //执行异步请求 call.enqueue(new Callback() {
@Override public void onFailure(Call call, final IOException e) {
mHandler.post(new Runnable() {
@Override public void run() {
if (iOkhttpCallBack != null) {
iOkhttpCallBack.onFailure(e); } } }); } @Override public void onResponse(Call call, Response response) throws IOException {
//只有response状态码为200,才是真正的成功 if (response != null && response.isSuccessful()) {
//通过获取响应体之后,通过string方法获取json字符串 final String json = response.body().string(); mHandler.post(new Runnable() {
@Override public void run() {
if (iOkhttpCallBack != null) {
iOkhttpCallBack.onSuccess(json); } } }); return; } mHandler.post(new Runnable() {
@Override public void run() {
if (iOkhttpCallBack != null) {
iOkhttpCallBack.onFailure(new Exception("服務器異常")); } } }); } }); } public interface IOkhttpCallBack {
void onSuccess(String json); void onFailure(Exception error); } }

转载于:https://www.cnblogs.com/fybb/p/11305355.html

你可能感兴趣的文章
Java并发编程
查看>>
Git Stash用法
查看>>
sql server 2008学习8 sql server存储和索引结构
查看>>
Jquery radio选中
查看>>
postgressql数据库中limit offset使用
查看>>
测试思想-集成测试 关于接口测试 Part 2
查看>>
windows下mysql密码忘了怎么办?【转】
查看>>
php生成器使用总结
查看>>
T-SQL中的indexof函数
查看>>
javascript基础之数组(Array)对象
查看>>
mysql DML DDL DCL
查看>>
RAMPS1.4 3d打印控制板接线与测试1
查看>>
python with语句中的变量有作用域吗?
查看>>
24@Servlet_day03
查看>>
初级ant的学习
查看>>
redis数据结构--String
查看>>
POJ 3279 Fliptile (二进制枚举)
查看>>
memcached 细究(三)
查看>>
future
查看>>
关于main函数传参数的问题
查看>>