package com.kymjs.rxvolley.demo; import android.os.Bundle; import android.os.Looper; import android.support.v7.app.AppCompatActivity; import android.view.View; import com.kymjs.common.FileUtils; import com.kymjs.common.Log; import com.kymjs.okhttp3.OkHttpStack; import com.kymjs.rxvolley.RxVolley; import com.kymjs.rxvolley.client.HttpCallback; import com.kymjs.rxvolley.client.HttpParams; import com.kymjs.rxvolley.client.ProgressListener; import com.kymjs.rxvolley.http.RequestQueue; import com.kymjs.rxvolley.rx.Result; import java.io.File; import java.util.Map; import io.reactivex.Observable; import io.reactivex.Observer; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; import okhttp3.OkHttpClient; import static junit.framework.Assert.assertFalse; import static junit.framework.Assert.assertNotNull; import static junit.framework.Assert.assertTrue; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RxVolley.setRequestQueue(RequestQueue.newRequestQueue(RxVolley.CACHE_FOLDER, new OkHttpStack(new OkHttpClient()))); findViewById(R.id.imageView).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { test(); } }); } /** * 上传进度回调 */ private void testUploadProgress() { HttpParams params = new HttpParams(); params.putHeaders("cookie", "aliyungf_tc=AQAAAOEM/UExEAsAUAYscy4Da0FfTWqX;" + "oscid=vv%2BiiKldi6wRaKbbRig0DDvMcIURmo56ZCZD2bfC83AsmxdhUxEVnr3ORNGz7BjiFlkpGQHUKJoRTzVAwy3oVtcO7JsM4nRIjEl6ZgM%2BmZgplCH0foAIiQ%3D%3D;"); params.put("uid", 863548); params.put("msg", "睡会"); params.put("img", new File(FileUtils.getSDCardPath() + "/request.png")); RxVolley.post("http://192.168.1.11/action/api/software_tweet_pub", params, new ProgressListener() { @Override public void onProgress(long transferredBytes, long totalSize) { Log.d(transferredBytes + "=====" + totalSize); Log.d("=====当前线程" + (Thread.currentThread() == Looper.getMainLooper ().getThread())); } }, new HttpCallback() { @Override public void onSuccess(String t) { Log.d("=====完成" + t); } }); } /** * RxJava */ private void test() { HttpCallback callback = new HttpCallback() { @Override public void onPreStart() { Log.d("=====onPreStart"); // 测试类是运行在异步的,所以此处断言会异常 // assertTrue(Thread.currentThread() == Looper.getMainLooper().getThread()); } @Override public void onPreHttp() { Log.d("=====onPreHttp"); assertTrue(Thread.currentThread() == Looper.getMainLooper().getThread()); } @Override public void onSuccessInAsync(byte[] t) { assertNotNull(t); Log.d("=====onSuccessInAsync" + new String(t)); //onSuccessInAsync 一定是运行在异步 assertFalse(Thread.currentThread() == Looper.getMainLooper().getThread()); } @Override public void onSuccess(String t) { Log.d("=====onSuccess" + t); assertNotNull(t); assertTrue(Thread.currentThread() == Looper.getMainLooper().getThread()); } @Override public void onSuccess(Map<String, String> headers, byte[] t) { assertNotNull(t); Log.d("=====onSuccessWithHeader" + headers.size() + new String(t)); assertTrue(Thread.currentThread() == Looper.getMainLooper().getThread()); } @Override public void onFailure(int errorNo, String strMsg) { super.onFailure(errorNo, strMsg); Log.d("=====onFailure" + strMsg); assertTrue(Thread.currentThread() == Looper.getMainLooper().getThread()); } @Override public void onFinish() { super.onFinish(); Log.d("=====onFinish"); assertTrue(Thread.currentThread() == Looper.getMainLooper().getThread()); } }; Observable<Result> observable = new RxVolley.Builder() // .url("http://kymjs.com/feed.xml") .url("https://api.douban.com/v2/book/26692621") //服务器端声明了no-cache .contentType(RxVolley.ContentType.FORM) .shouldCache(true) .httpMethod(RxVolley.Method.GET) .callback(callback) .getResult(); observable.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<Result>() { @Override public void onComplete() { Log.i("kymjs", "======网络请求结束"); } @Override public void onSubscribe(Disposable d) { Log.i("kymjs", "======网络请求开始"); } @Override public void onNext(Result s) { Log.i("kymjs", "======网络请求" + new String(s.data)); } @Override public void onError(Throwable e) { Log.i("kymjs", "======网络请求失败" + e.getMessage()); } }); } /** * 下载 */ private void download() { RxVolley.download(FileUtils.getSDCardPath() + "/a.apk", "https://www.oschina.net/uploads/osc-android-app-2.4.apk", new ProgressListener() { @Override public void onProgress(long transferredBytes, long totalSize) { Log.d(transferredBytes + "======" + totalSize); } }, new HttpCallback() { @Override public void onSuccess(String t) { Log.d("====success" + t); } @Override public void onFailure(int errorNo, String strMsg) { Log.d(errorNo + "====failure" + strMsg); } }); } }