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中加入: 

 -libraryjars libs/xUtils-3.1.14.jar 

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

   -keepattributes Signature

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM