OkHttp3的使用,代碼奉上

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() {
			
			@Override
			public void onResponse(Call arg0, Response arg1) throws IOException {
				// TODO Auto-generated method stub
				
			}
			
			@Override
			public 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){
			@Override
			public void onSuccess(JSONObject json) throws IOException {
				// TODO Auto-generated method stub
				super.onSuccess(json);
				try {
					if("true".equals(json.getString("success"))){
						mHandler.sendEmptyMessage(2);
					}
				} catch (JSONException e) {
					
					e.printStackTrace();
				}
			}
		});


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章