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
原创粉丝点击