題記——java
靜坐窗前,與明月爲伴。緩存
每一天都是一個新的開始,每一天都是一個新的心態,每一天的目標都是品好每一杯白開水。服務器
生活的價值是活的有意義,而活的有意義就是生命的折騰。網絡
在功夫的世界中,惟快不破,在移動的世界中,一樣是惟快不破。async
在功夫的世界中,最高境界就是無招,那麼在移動的世界中,就是一行代碼搞定一切。ide
Nohttp一個大神所創的一行代碼搞定一個網絡請求。ui
在網絡請求的世界中,解析JSON數據已經是一種常態,而JSON只是一個Stringurl
/** * Post請求,返回的數據類型爲String * @param url 請求服務器地址 * @param what 請求服務標識 * @param map 請求參數添加 * @param listener 響應結果監聽 */ public void asyncPostStringRequest(String url, int what, Map<String, String> map, OnResponseListener<String> listener) { /** * 取消隊列中已開始的請求 */ mRequestQueue.cancelBySign(what); /** * 建立請求對象 */ Request<String> request = NoHttp.createStringRequest(url, RequestMethod.POST); /** * 添加請求參數 */ if (map != null) { for (Map.Entry<String, String> entry : map.entrySet()) { if (entry.getKey() != null) { request.add(entry.getKey(), entry.getValue()); } } } /** * 設置取消請求標識 */ request.setCancelSign(what); /** * what: 當多個請求同時使用同一個OnResponseListener時用來區分請求, 相似handler的what同樣 * request: 請求對象 * onResponseListener 回調對象,接受請求結果 */ mRequestQueue.add(what, request, listener); }
使用方法:spa
//請求連接 String url = "http://172.19.1.77:8080/OkhttpAppLication/test"; //請求網絡標識 final int strUrlTag = 12; //請求參數 Map<String,String> map = new HashMap<>(); map.put("username","admiin"); map.put("password","122345"); //調用請求 NohttpUtils.getIntanse(getApplication()) .asyncPostStringRequest(urls, strUrlTag,map, new SimpleResponseListener<String>() { @Override public void onSucceed(int what, Response<String> response) { /** * 請求成功接收服務器返回內容 */ String respose = response.get(); } @Override public void onFailed(int what, String url, Object tag, Exception exception, int responseCode, long networkMillis) { /** * 請求失敗 */ } });
/** * 加載圖片的網絡請求 * @param url 請求網絡服務器地址 * @param what 請求網絡標識 * @param listener 請求網絡響應監聽 */ public void asyncLoadImage(String url, int what, OnResponseListener<Bitmap> listener) { /** * 建立請求對象 */ Request<Bitmap> imageRequest = NoHttp.createImageRequest(url); imageRequest.setTag(what); /** * 設置先加載緩存,若是沒有緩存,再去加載網絡 */ imageRequest.setCacheMode(CacheMode.NONE_CACHE_REQUEST_NETWORK); /** * 設置取消請求標識 */ imageRequest.setCancelSign(what); /** * 發起請求 */ mRequestQueue.add(what, imageRequest, listener); }
使用方法:.net
final String urlimage ="http://pic55.nipic.com/file/20141208/19462408_171130083000_2.jpg"; final ImageView imageView = (ImageView) findViewById(R.id.imageviews); final int imagTag = 34; NohttpUtils.getIntanse(getApplication()) .asyncLoadImage(urlimage, imagTag, new SimpleResponseListener<Bitmap>() { @Override public void onSucceed(int what, Response<Bitmap> response) { imageView.setImageBitmap(response.get()); } @Override public void onFailed(int what, String url, Object tag, Exception exception, int responseCode, long networkMillis) { } });
/** * @param url 請求服務器連接 * @param what 請求服務標識 * @param map 請求參數封裝 * @param filePath 下載文件的保存路徑與文件名 * @param listener 下載監聽 */ public void asyncDownFileRequest(String url, int what, Map<String, String> map, String filePath, DownloadListener listener) { /** * url 下載服務器地址 * RequestMethod.POST 發送請求方式 * Environment.getExternalStorageDirectory().getPath() 文件下載保存路徑 * filePath 文件下載保存名稱 * true 支持斷點下載 * false 不覆蓋已有的相同文件名稱的文件 */ DownloadRequest downloadRequest = NoHttp.createDownloadRequest(url, RequestMethod.POST, Environment.getExternalStorageDirectory().getPath(), filePath, true, false); /** * 添加請求參數 */ if (map != null && !map.isEmpty()) { for (Map.Entry<String, String> entry : map.entrySet()) { if (entry.getKey() != null) { downloadRequest.add(entry.getKey(), entry.getValue()); } } } /** * 設置請求標識 */ downloadRequest.setCancelSign(what); /** * 下載 */ downloadQueue.add(what, downloadRequest, listener); }
使用方法
String downUrl ="http://192.168.1.100:8080//OkhttpAppLication/DownFile1"; int downWhat = 96; String downFileName ="mewmuise.mp3"; /** * 下載 */ NohttpUtils.getIntanse(getApplication()).asyncDownFileRequest(downUrl, downWhat, null, downFileName, new DownloadListener() { @Override public void onDownloadError(int what, Exception exception) { System.out.println("down error "+exception.getMessage()); } @Override public void onStart(int what, boolean isResume, long rangeSize, Headers responseHeaders, long allCount) { } @Override public void onProgress(int what, int progress, long fileCount) { } @Override public void onFinish(int what, String filePath) { System.out.println("down finish "+filePath); } @Override public void onCancel(int what) { } });
/** * 分塊級上傳文件 提交表單數據 * @param url * @param what 網絡請求標識 * @param forMap 網絡請求提交表單數據 * @param fileMap 網絡請求提交上傳文件 * @param listener 網絡請求標識 */ public void asyncLoadUpFile(String url, int what, Map<String, String> forMap,Map<String, String> fileMap, OnResponseListener<String> listener) { mRequestQueue.cancelBySign(what); Request<String> stringRequest = NoHttp.createStringRequest(url, RequestMethod.POST); /** * 添加上傳文件信息 */ if (fileMap != null && !fileMap.isEmpty()) { for (Map.Entry<String, String> entry : fileMap.entrySet()) { if (entry.getKey() != null) { File file = new File(entry.getValue()); String fileName = file.getName(); stringRequest.addHeader("Content-Disposition", "form-data;name=\"" + fileName + "\";filename=\"" + fileName + "\""); stringRequest.add(entry.getKey(), file); } } } /** * 添加請求參數 */ if (forMap != null && !forMap.isEmpty()) { for (Map.Entry<String, String> entry : forMap.entrySet()) { if (entry.getKey() != null) { stringRequest.add(entry.getKey(), entry.getValue()); } } } /** * 網絡取消標識 */ stringRequest.setCancelSign(what); /** * 發起請求 */ mRequestQueue.add(what,stringRequest,listener); }
使用方法
String loadUpUrl ="http://172.19.1.45:8080/OkhttpAppLication/LoadFileServlet"; int what = 58; Map<String,String> map1 = new HashMap<>(); map1.put("pucture1", "/storage/emulated/0/custom/2016/6/18//20160623135328.PNJE"); /** * 上傳 */ NohttpUtils.getIntanse(getApplication()).asyncLoadUpFile(loadUpUrl, what, null,map1, new SimpleResponseListener<String>() { @Override public void onSucceed(int what, Response<String> response) { System.out.println("up succeed "); System.out.println("uploadFiele response is "+response.get()); } @Override public void onFailed(int what, String url, Object tag, Exception exception, int responseCode, long networkMillis) { System.out.println("up faile "); } });
當今世界是與時俱進的時代,早已不是百年前的那種十年礳一劍的時代,知識的更新的速度以超乎想象,咱們每個人沒有理由不去折騰生命
更多文章 請查看 http://blog.csdn.net/zl18603543572