OkHttp3的使用,代码奉上
来源:互联网 发布:身边嫁有钱人知乎 编辑:程序博客网 时间:2024/05/22 21:37
public class OkHttpUtil {private Context context;public static String Seisson;public static OkHttpClient mOkHttpClient;public OkHttpUtil (Context mcontext) { Intent intent=new Intent(mcontext,BaiduLocation.class); mcontext.startService(intent); this.context=mcontext; mOkHttpClient=builder.connectTimeout(60, TimeUnit.SECONDS).cookieJar(new CookiesManager()).build(); } private static final okhttp3.OkHttpClient.Builder builder = new OkHttpClient.Builder(); /** * 该不会开启异步线程。 * @param request * @return * @throws IOException */ public static Response execute(Request request) throws IOException{ return mOkHttpClient.newCall(request).execute(); } /** * 开启异步线程访问网络 * @param request * @param responseCallback */ public static void enqueue(String url,Map<String, String> maps, Callback responseCallback){ mOkHttpClient.newCall(getPraRequest(url, maps)).enqueue(responseCallback); } public static void enqueueFile(String url,File file, Callback responseCallback){ mOkHttpClient.newCall(getFileRequest(url, file)).enqueue(responseCallback); } public static void downPic(String url ,Callback responseCallback){ mOkHttpClient.newCall(getPraRequest(url, null)).enqueue(responseCallback); } /** * 开启异步线程访问网络, 且不在意返回结果(实现空callback) * @param request */ public static void enqueue(Request request){ mOkHttpClient.newCall(request).enqueue(new Callback() {@Overridepublic void onResponse(Call arg0, Response arg1) throws IOException {// TODO Auto-generated method stub}@Overridepublic void onFailure(Call arg0, IOException arg1) {// TODO Auto-generated method stub}}); } public static String getStringFromServer(String url) throws IOException{ Request request = new Request.Builder().url(url).build(); Response response = execute(request); if (response.isSuccessful()) { String responseUrl = response.body().string(); return responseUrl; } else { throw new IOException("Unexpected code " + response); } } private static final String CHARSET_NAME = "UTF-8"; /** * 这里使用了HttpClinet的API。只是为了方便 * @param params * @return */ public static String formatParams(List<BasicNameValuePair> params){ return URLEncodedUtils.format(params, CHARSET_NAME); } /** * 为HttpGet 的 url 方便的添加多个name value 参数。 * @param url * @param params * @return */ public static String attachHttpGetParams(String url, List<BasicNameValuePair> params){ return url + "?" + formatParams(params); } /** * 为HttpGet 的 url 方便的添加1个name value 参数。 * @param url * @param name * @param value * @return */ public static String attachHttpGetParam(String url, String name, String value){ return url + "?" + name + "=" + value; } public static RequestBody getRequestBody(Map<String, String> maps){ Builder builder= new FormBody.Builder().add("DeviceType", "ANDROID").add("SystemVersion", "1.0");for (String key : maps.keySet()) {builder.add(key, maps.get(key)); }return builder.build(); } private static Request getPraRequest(String url,Map<String, String> maps){ Builder builder= new FormBody.Builder().add("DeviceType", "ANDROID").add("SystemVersion", "1.0");if(maps!=null){ for (String key : maps.keySet()) {builder.add(key, maps.get(key)); }} return new Request.Builder().url(url).post(builder.build()).build(); } public static Request getRequest(String url,Map<String, String> maps){ Builder builder= new FormBody.Builder().add("DeviceType", "ANDROID").add("SystemVersion", "1.0"); for (String key : maps.keySet()) {builder.add(key, maps.get(key)); } return new Request.Builder().url(url).post(builder.build()).build(); } public static Request getFileRequest(String url,File file){ // RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"), file); MultipartBody.Builder builder= new MultipartBody.Builder().setType(MultipartBody.FORM); // builder.addFormDataPart("file", null,RequestBody.create(MediaType.parse("image/png"),file)); /* Builder builder= new FormBody.Builder().add("DeviceType", "ANDROID").add("SystemVersion", "1.0"); builder.addFormDataPart*/ /* .addFormDataPart("hello", "android") .addFormDataPart("photo", file.getName(), RequestBody.create(null, file)) .addPart(Headers.of("Content-Disposition", "form-data; name=\"another\";filename=\"another.dex\""), RequestBody.create(MediaType.parse("application/octet-stream"), file)) .build();*/// MultipartBody body= new MultipartBody.Builder().addFormDataPart("file", file.getName(), requestBody).build(); MultipartBody body= builder.addPart( Headers.of("Content-Disposition", "form-data; name=\"file\";filename=\"file.jpg\""), RequestBody.create(MediaType.parse("image/png"),file)).build(); // RequestBody body= new MultipartBody.Builder().addFormDataPart(MediaType.parse( file.getName(), requestBody).build(); return new Request.Builder().url(url).post(body).build(); } private class CookiesManager implements CookieJar { private final PersistentCookieStore cookieStore = new PersistentCookieStore(context); @Override public void saveFromResponse(HttpUrl url, List<Cookie> cookies) { if (cookies != null && cookies.size() > 0) { for (Cookie item : cookies) { cookieStore.add(url, item); } } } @Override public List<Cookie> loadForRequest(HttpUrl url) { List<Cookie> cookies = cookieStore.get(url); return cookies; } } }
使用说明:
OkHttpUtil okHttpUtil=new OkHttpUtil(getApplicationContext()); //初始化 工作类
使用:
Map<String, String> maps=new HashMap<String, String>();maps.put("id", id);OkHttpUtil.enqueue(IPUtil.deleteCart, maps, new JSONCallback(MyShopCartActivity.this){@Overridepublic void onSuccess(JSONObject json) throws IOException {// TODO Auto-generated method stubsuper.onSuccess(json);try {if("true".equals(json.getString("success"))){mHandler.sendEmptyMessage(2);}} catch (JSONException e) {e.printStackTrace();}}});
0 0
- OkHttp3的使用,代码奉上
- 奉上求第二大数的代码
- okhttp3的简单使用
- okhttp3的使用
- OkHttp3的使用
- okHttp3的简单使用
- OKhttp3的基本使用
- OkHttp3的使用
- 奉上20个Android很有用的代码片段
- 你想成为出色的代码编写者吗?奉上八大方式
- 一个样式转换的小功能 代码奉上
- okhttp3基础使用的封装
- Android okhttp3的基本使用
- okhttp3版 piccaso的使用
- Android okhttp3的使用详解
- okhttp3基础使用的封装
- Android OKHttp3的初级使用
- OkHttp3网络协议的使用
- 计算机网络面试总结
- mysql修改时区
- mabatis标签 choose (when, otherwise)
- CMUSphinx-在你开始之前2
- Atom之Markdown环境搭建
- OkHttp3的使用,代码奉上
- 每个ios开发者都应该知道Top 10 Swift三方库
- HDU 2102 A计划【BFS广搜】
- 运维日记004 - 关于开发和运维的点滴感悟
- STM8调试笔记
- 地球实时卫星图片资源-与当前时间只相差30分钟
- Javascript对cookie的“增删查改”
- 移动浪潮下,看地推吧如何“霸占”行业新风口
- opencv——hough变换