<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日誌 }
/** * 自定義實體參數類請參考: * 請求註解 {@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