xUtils 3.0 post使用詳解

 

github:https://github.com/wyouflf/xUtils3

xUtils3簡介

  • xUtils 包含了不少實用的android工具.
  • xUtils 支持超大文件(超過2G)上傳,更全面的http請求協議支持(11種謂詞),擁有更加靈活的ORM,更多的事件註解支持且不受混淆影響...
  • xUtils 最低兼容Android 4.0 (api level 14). (Android 2.3?)
  • xUtils3變化較多因此創建了新的項目不在舊版(github.com/wyouflf/xUtils)上繼續維護, 相對於舊版本:
    1. HTTP實現替換HttpClient爲UrlConnection, 自動解析回調泛型, 更安全的斷點續傳策略.
    2. 支持標準的Cookie策略, 區分domain, path...
    3. 事件註解去除不經常使用的功能, 提升性能.
    4. 數據庫api簡化提升性能, 達到和greenDao一致的性能.
    5. 圖片綁定支持gif, webp; 支持圓角, 圓形, 方形等裁剪, 支持自動旋轉

 

使用前配置

須要的權限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
初始化
// 在application的onCreate中初始化
@Override
public void onCreate() {
    super.onCreate();
    x.Ext.init(this);
    x.Ext.setDebug(true); // 是否輸出debug日誌
}

POST 請求

/**
 * 自定義實體參數類請參考:
 * 請求註解 {@link org.xutils.http.annotation.HttpRequest}
 * 請求註解處理模板接口 {@link org.xutils.http.app.ParamsBuilder}
 *
 * 須要自定義類型做爲callback的泛型時, 參考:
 * 響應註解 {@link org.xutils.http.annotation.HttpResponse}
 * 響應註解處理模板接口 {@link org.xutils.http.app.ResponseParser}
 *
 * 示例: 查看 org.xutils.sample.http 包裏的代碼
 */
RequestParams params = new RequestParams (url);
// 有上傳文件時使用multipart表單, 不然上傳原始文件流. // params.setMultipart(true); // 上傳文件方式 1 // params.uploadFile = new File("/sdcard/test.txt"); // 上傳文件方式 2
 params.addBodyParameter("uploadFile", new File("/sdcard/test.txt")); Callback.Cancelable cancelable = x.http().post(params, /** * 1. callback的泛型: * callback參數默認支持的泛型類型參見{@link org.xutils.http.loader.LoaderFactory}, * 例如: 指定泛型爲File則可實現文件下載, 使用params.setSaveFilePath(path)指定文件保存的全路徑. * 默認支持斷點續傳(採用了文件鎖和尾端校驗續傳文件的一致性). * 其餘經常使用類型能夠本身在LoaderFactory中註冊, * 也能夠使用{@link org.xutils.http.annotation.HttpResponse} * 將註解HttpResponse加到自定義返回值類型上, 實現自定義ResponseParser接口來統一轉換. * 若是返回值是json形式, 那麼利用第三方的json工具將十分容易定義本身的ResponseParser. * 如示例代碼{@link org.xutils.sample.http.BaiduResponse}, 可直接使用BaiduResponse做爲 * callback的泛型. * * 2. callback的組合: * 能夠用基類或接口組合個種類的Callback, 見{@link org.xutils.common.Callback}. * 例如: * a. 組合使用CacheCallback將使請求檢測緩存或將結果存入緩存(僅GET請求生效). * b. 組合使用PrepareCallback的prepare方法將爲callback提供一次後臺執行耗時任務的機會, * 而後將結果給onCache或onSuccess. * c. 組合使用ProgressCallback將提供進度回調. * ...(可參考{@link org.xutils.image.ImageLoader} * 或 示例代碼中的 {@link org.xutils.sample.download.DownloadCallback}) * * 3. 請求過程攔截或記錄日誌: 參考 {@link org.xutils.http.app.RequestTracker} * * 4. 請求Header獲取: 參考 {@link org.xutils.http.app.InterceptRequestListener} * * 5. 其餘(線程池, 超時, 重定向, 重試, 代理等): 參考 {@link org.xutils.http.RequestParams * **/
       new Callback.CommonCallback<String>() { @Override public void onSuccess(String result) { Toast.makeText(x.app(), result, Toast.LENGTH_LONG).show(); } @Override public void onError(Throwable ex, boolean isOnCallback) { //Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show();
               if (ex instanceof HttpException) { // 網絡錯誤
                   HttpException httpEx = (HttpException) ex; int responseCode = httpEx.getCode(); String responseMsg = httpEx.getMessage(); String errorResult = httpEx.getResult(); // ...
               } else { // 其餘錯誤 // ...
 } Toast.makeText(x.app(), ex.getMessage(), Toast.LENGTH_LONG).show(); } @Override public void onCancelled(CancelledException cex) { Toast.makeText(x.app(), "cancelled", Toast.LENGTH_LONG).show(); } @Override public void onFinished() { } }); // cancelable.cancel(); // 取消 // 若是須要記錄請求的日誌, 可以使用RequestTracker接口(優先級依次下降, 找到一個實現後會忽略後面的): // 1. 自定義Callback同時實現RequestTracker接口; // 2. 自定義ResponseParser同時實現RequestTracker接口; // 3. 在LoaderFactory註冊.

 

 

混淆:

proguard-project中加入: android

 -libraryjars libs/xUtils-3.1.14.jar git

   -keep class com.lidroid.** { *; } github

   -keepattributes Signatureweb

相關文章
相關標籤/搜索