电商项目---Okhttp网络请求及单列模式
2018-01-19 10:46
253 查看
HttpConfig接口
package com.xinzhengwei.mygouwuche.okhttp; /** * Created by 辛政维 on 2018/1/13. */ public class HttpConfig { public static String data_url="https://www.zhaoapi.cn/product/getProductDetail"; public static String add_url="https://www.zhaoapi.cn/product/addCart"; public static String cha_url="https://www.zhaoapi.cn/product/getCarts"; }
OkHttoUtil工具类
package com.xinzhengwei.mygouwuche.okhttp; import android.os.Handler; import android.os.Message; import java.io.IOException; import java.util.Map; import java.util.Set; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.Interceptor; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; /** * Created by 辛政维 on 2018/1/13. */ public class OkHttoUtil { public static OkHttoUtil okHttoUtil=null; private OkLoadListener okLoadListener; private MyHandler myHandler=new MyHandler(); public static OkHttoUtil getInstance(){ if (okHttoUtil==null){ okHttoUtil = new OkHttoUtil(); } return okHttoUtil; } public void okHttpGet(String url){ OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new MyInterceptor()).build(); Request build = new Request.Builder().url(url).build(); Call call = client.newCall(build); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Message message = myHandler.obtainMessage(); message.what=0; message.obj=e.getMessage(); myHandler.sendMessage(message); } @Override public void onResponse(Call call, Response response) throws IOException { Message message = myHandler.obtainMessage(); message.what=1; message.obj=response.body().string(); myHandler.sendMessage(message); } }); } public void okPost(String url, Map<String,String> map){ OkHttpClient client = new OkHttpClient.Builder().addInterceptor(new MyInterceptor()).build(); FormBody.Builder builder = new FormBody.Builder(); Set<String> keySet = map.keySet(); for (String key:keySet) { String values = map.get(key); builder.add(key,values+""); } FormBody build = builder.build(); Request request = new Request.Builder().url(url).post(build).build(); Call call = client.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { Message message = myHandler.obtainMessage(); message.what=0; message.obj=e.getMessage(); myHandler.sendMessage(message); } @Override public void onResponse(Call call, Response response) throws IOException { Message message = myHandler.obtainMessage(); message.what=1; message.obj=response.body().string(); myHandler.sendMessage(message); } }); } class MyInterceptor implements Interceptor { @Override public Response intercept(Chain chain) throws IOException { Request request = chain.request(); RequestBody body = request.body(); if (body instanceof FormBody){ FormBody.Builder builder = new FormBody.Builder(); for (int i = 0; i <((FormBody) body).size() ; i++) { String name = ((FormBody) body).name(i); String value = ((FormBody) body).value(i); //放入新的 builder.add(name, value); } builder.add("source", "android"); FormBody newBody = builder.build(); //创建新的请求 Request newRequest = request.newBuilder().post(newBody).build(); Response response = chain.proceed(newRequest); return response; } return null; } } public void setOkLoadListener(OkLoadListener okLoadListener){ this.okLoadListener=okLoadListener; } class MyHandler extends Handler{ @Override public void handleMessage(Message msg) { switch (msg.what){ case 0: String error = (String) msg.obj; okLoadListener.loadError(error); break; case 1: String json = (String) msg.obj; okLoadListener.loadSuccess(json); break; } } } }
OkLoadListener接口
package com.xinzhengwei.mygouwuche.okhttp; /** * Created by 辛政维 on 2018/1/17. */ public interface OkLoadListener { void loadSuccess(String json); void loadError(String error); }
相关文章推荐
- kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式
- kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式
- kotlin for android----------MVP模式下(OKHttp和 Retrofit+RxJava)网络请求的两种实现方式
- OkHttpClient请求网络数据
- 网络请求数据添加到列表(okhttp+RecyclerView)
- 打造属于自己的网络请求框架(OKHttp+Retrofit+RxJava)
- Mvp设计模式实现okHttpClient请求展示在RecycleView
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比 标签: androidVolleyOkhttpRetrofit网络请求框架
- 网络请求封装及使用(okhttp)
- 网络请求框架(OKHttp+Retrofit+RxJava)
- Android更好的扩展性更强网络请求框架----okhttp
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比
- android网络请求,OKHttp post访问web API
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比
- iOS9下修改回HTTP模式进行网络请求
- 常用的几种网络请求OkHttpClient , HttpClient和 HttpURLConnection
- 网络请求框架(一)-----okHttp的使用
- 项目优化-Http网络请求的封装
- 初识网络请求框架--OKHttp官方介绍