okhttp
来源:互联网 发布:淘宝每日好店在哪里看 编辑:程序博客网 时间:2024/05/18 22:56
先编译以下东西
compile 'com.squareup.okhttp3:logging-interceptor:3.9.0'compile 'com.squareup.okhttp3:okhttp:3.9.0'
添加权限
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Gson jar包
NetWorkUtil 里的
package com.bawie.lianxi.net;import android.content.Context;import android.net.ConnectivityManager;import android.net.NetworkInfo;public class NetWorkUtil { // check all network connect, WIFI or mobile public static boolean isNetworkAvailable(final Context context) { boolean hasWifoCon = false; boolean hasMobileCon = false; ConnectivityManager cm = (ConnectivityManager) context.getSystemService(context.CONNECTIVITY_SERVICE); NetworkInfo[] netInfos = cm.getAllNetworkInfo(); for (NetworkInfo net : netInfos) { String type = net.getTypeName(); if (type.equalsIgnoreCase("WIFI")) { if (net.isConnected()) { hasWifoCon = true; } } if (type.equalsIgnoreCase("MOBILE")) { if (net.isConnected()) { hasMobileCon = true; } } } return hasWifoCon || hasMobileCon; }}
OkHttpUtils 里的
package com.bawie.lianxi.net;import android.content.Context;import android.os.Environment;import android.os.Handler;import android.os.Looper;import android.widget.Toast;import com.google.gson.Gson;import java.io.IOException;import java.util.Map;import java.util.concurrent.TimeUnit;import okhttp3.Call;import okhttp3.Callback;import okhttp3.FormBody;import okhttp3.MediaType;import okhttp3.MultipartBody;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.RequestBody;import okhttp3.Response;import okhttp3.logging.HttpLoggingInterceptor;public class OkHttpUtils { //单例模式,懒汉式 private static OkHttpUtils okHttpUtils; private final OkHttpClient client; private Context context; private Handler handler = new Handler(Looper.getMainLooper()); private OkHttpUtils(Context context){ HttpLoggingInterceptor log = new HttpLoggingInterceptor(); log.setLevel(HttpLoggingInterceptor.Level.BODY); client = new OkHttpClient.Builder() .connectTimeout(15, TimeUnit.SECONDS) .addInterceptor(log) .build(); this.context = context; } public static OkHttpUtils getInstance(Context context){ if(okHttpUtils==null){ synchronized (OkHttpUtils.class){ if(okHttpUtils==null){ okHttpUtils = new OkHttpUtils(context); } } } return okHttpUtils; } //doget请求 public void doget(String url, final Class clazz, final OnNetListener onNetListener){ //网络判断 if (!NetWorkUtil.isNetworkAvailable(context)) { Toast.makeText(context, "没有网络,请查看设置", Toast.LENGTH_SHORT).show(); return; } Request request = new Request.Builder().url(url).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { onNetListener.onError(e); } @Override public void onResponse(Call call,Response response) throws IOException { final String string = response.body().string(); final Object o = new Gson().fromJson(string, clazz); handler.post(new Runnable() { @Override public void run() { try { onNetListener.onSuccess(o); } catch (IOException e) { e.printStackTrace(); } } }); } }); } //dopost请求 public void doPost(String url, Map<String,String> params, final Class clazz, final OnNetListener onNetListener){ //网络判断 if (!NetWorkUtil.isNetworkAvailable(context)) { Toast.makeText(context, "没有网络,请查看设置", Toast.LENGTH_SHORT).show(); return; } if(params != null && params.size() > 0){ FormBody.Builder builder = new FormBody.Builder(); for (Map.Entry<String, String> entry : params.entrySet()) { builder.add(entry.getKey(), entry.getValue()); } FormBody formBody = builder.build(); Request request = new Request.Builder().url(url).post(formBody).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { final Object o = new Gson().fromJson(response.body().string(), clazz); handler.post(new Runnable() { @Override public void run() { try { onNetListener.onSuccess(o); } catch (IOException e) { e.printStackTrace(); } } }); } }); } } //下载 public void download(String url, Callback callback) { Request request = new Request.Builder().url(url).build(); client.newCall(request).enqueue(callback); } /** * 上传 * * @param url * @param fileName */ public void uploadFile(String url, String fileName) { String file = Environment.getExternalStorageState() + "/" + fileName; RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"), file); //创建RequestBody 设置类型等 RequestBody requestBody = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("file", fileName, fileBody).build(); Request request = new Request.Builder().url(url).post(requestBody).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { } }); }}
OnNetListener 里的
package com.bawie.lianxi.net;import java.io.IOException;public interface OnNetListener { public void onSuccess(Object o) throws IOException; public void onError(IOException e);}
阅读全文
0 0
- OkHttp
- okhttp
- OkHttp
- OkHttp
- OkHttp
- okhttp
- OKHTTP
- okhttp
- Okhttp
- okHttp
- OkHttp
- okhttp
- Okhttp
- okhttp
- OkHttp
- okhttp
- okhttp
- okhttp
- struts2工作流程
- 大话设计模式----依赖倒置原则
- 14期 11月博客自荐
- 欧拉函数模板
- Struts2的执行流程
- okhttp
- android ViewStub的应用
- java发展史
- Android系统性能调优工具介绍
- 顺序表操作集
- H5 手机上发短信,电话
- 实现sublime Text 3对java编译执行
- #校招常识#关于三方,两方,毁约的那些事
- uva572 Oil Deposits