自己写的HttpManager OkHttp

2024-02-22 21:18
文章标签 okhttp httpmanager

本文主要是介绍自己写的HttpManager OkHttp,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

compile ‘com.squareup.okhttp3:okhttp:3.5.0’

import android.content.Context;
import android.support.v7.app.AlertDialog;
import android.util.Log;

import org.json.JSONException;
import org.json.JSONObject;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

/**
* Created by sunzl on 16/12/28.
*/
interface CompleteHttp{
void complete(JSONObject obj);
}
public class HttpManager {

static public void  post(String  url, final Context context, final CompleteHttp completeHttp){//创建okHttpClient对象OkHttpClient mOkHttpClient = new OkHttpClient();//创建一个Requestfinal Request request = new Request.Builder().url(url).build();//new callCall call = mOkHttpClient.newCall(request);//请求加入调度call.enqueue(new Callback() {@Overridepublic void onFailure(Call call, IOException e) {Log.e("M",e.getMessage());App.getHandler().post( new Runnable(){@Overridepublic void run(){new MyDialog.Builder(context).setTitle("友情提示").setMessage("网络异常").setPositiveButton("确定", null).show();}});}@Overridepublic void onResponse(Call call, Response response) throws IOException {String str = response.body().string();Log.e("1",str);try {final JSONObject obj = new JSONObject(str);if (obj.getInt("code") == 1) {App.getHandler().post(new Runnable() {@Overridepublic void run() {try {completeHttp.complete(obj.getJSONObject("data"));} catch (JSONException e) {e.printStackTrace();}}});}else {App.getHandler().post(new Runnable() {@Overridepublic void run() {try {new MyDialog.Builder(context).setTitle("友情提示").setMessage(obj.getString("msg")).setPositiveButton("确定", null).show();} catch (JSONException e) {e.printStackTrace();}}});}} catch (JSONException e) {e.printStackTrace();}}});}

}

在 android:name=”.App”

import android.app.Application;
import android.os.Handler;
import android.util.Log;

/**
* Created by sunzl on 16/12/28.
*/

public class App extends Application{

private static Handler handler;public static Handler getHandler() {return handler;
}@Override
public void onCreate() {super.onCreate();Log.e("s","app");handler = new Handler();
}

}

自定一个可以在前面显示的dialog
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.TextView;

/**
* Created by sunzl on 16/12/28.
*/

public class MyDialog extends AlertDialog {
private TextView text;
public MyDialog(Context context) {
super(context);
}

@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Window window = getWindow();window.setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);}

}

这篇关于自己写的HttpManager OkHttp的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/736528

相关文章

okHttp框架的介绍 和关于https的自定义签名证书的问题

参考博客:【张鸿洋的博客】 Android Https相关完全解析 当OkHttp遇到Https 1.okhttp的介绍:  它能够处理: 一般的get请求一般的post请求基于Http的文件上传文件下载加载图片支持请求回调,直接返回对象、对象集合支持session的保持 开发平台使用:     使用前,对于Android Studio的用户,可以选择添加: compile '

Android 使用OkHttp

为什么需要一个HTTP库 Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient。 关于HttpURLConnection和HttpClient的选择>>官方博客 尽管Google在大部分安卓版本中推荐使用HttpURLConnection,但是这个类相比HttpClient实在是太难用,太弱爆了。 OkHttp是一个相对成熟的解决方案,

Glide使用OkHttp加载图片

导入依赖库即可 implementation 'com.github.bumptech.glide:glide:4.11.0'kapt 'com.github.bumptech.glide:compiler:4.11.0'implementation "com.github.bumptech.glide:okhttp3-integration:4.11.0" 实现原理: 1、如果你没

retrofit + okhttp 数组 +header+ post + body[params]

很辛苦,搞定实际上是因为基础确实落下了很多,加上retrofit的body讲解太少,翻墙看了很多资料,最终,解决,给各位分享下代码,互相学习; 1.需求:添加header,并且数组进行post传参,@body api代码: @POST("void")Call<Bean> getbean( @Header("a") String a ,@Header("b") Stri

OkHttp学习(3)--同步、异步之上传文件至服务器(重写RequestBody方法,实现上传进度接口回调)

Volley学习篇,实例代码均成功 Volley学习(一)Android Volley源码解析 Volley学习(二)简封Volley、为Volley请求头体添加Json参数、Gson和JsonObject生成Json数据、Gson解析返回的Json Volley学习(三)ImageRequest、ImageLoader、NetworkImageView源码简读 Volley学习

OkHttp学习(2)--异步下载图片、文件(拦截器重写Response方法实现下载进度获取)

OkHttp学习(1)–>>同步和异步(get、post键值对、post带map、请求头体封装json) Volley学习链接—想了解Volley的可以看我这5篇 今天来了解下okHttp如何进行图片、文件下载的 首先在OkHttpManger弄一个单利模式,初始化一个OkHttpClient,然后放进去一个handler,线程更新ui使用 private Handler okHttp

OkHttp学习(1)--同步和异步(get、post键值对、post带map、请求头体封装json)

之前学习过Volley的种种用法,点击如下链接可以参考 如果想对Volley有所了解,可以看我这5篇关于Volley的实践代码 今天来学习下OkHttp的学习,这篇博客主要是来了解OkHttp同步和异步—(get、post键值对、post带map、请求头体封装json) 下一篇去了解文件上传、图片下载 为了快速使用,没有去研究源码了,但是看过Volley的源码,我感觉本质上也是想通的,就直

Retrofit2.0 或OKHttp 日志log

Retrofit2.0 怎么打印请求到的json字符串和查看log呢?  关键类:HttpLoggingInterceptor  关键代码: HttpLoggingInterceptor logging = new HttpLoggingInterceptor();logging.setLevel(HttpLoggingInterceptor.Level.BODY);httpCl

Retrofit-OkHttp 动态切换服务器地址

需求: 一个app可能需要根据地区、用户等,动态设置不同的服务器地址,而okhttp为单例模式,不支持动态切换 方案: 利用okhttp的拦截器功能,实现该需求 1、利用headers参数,设置fixed标记的为地址固定不变接口,其他为动态切换(逻辑判断根据需求自己定义) @Headers({"domain:fixed"})//设置fixed为固定不变地址@GET("xx/xx/

OkHttp 基本使用源码分析

本文介绍了 OkHttp 的基本使用以及源码分析,强烈建议配合源码进行阅读,否则会不知所云!!! 第一次写源码分析类文章,辛苦各位老铁指正 本文基于 OkHttp 3.11.0 版本进行分析,查看源码时请对应,或者直接下载文末的 Demo 进行查看 文章目录 OkHttp 的基本使用同步请求异步请求 OkHttp 的源码分析同步请求异步请求 OkHttp 的任务调度(Dispatch