compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
//自定义接口 存放uri串
public interface Getnet { public static String net= "https://www.zhaoapi.cn/";//retrofit使用的baseurl
//接口为 网络请求的方式 必须post
public interface TestService { //第一种方式上传头像 @POST("file/upload") @Multipart Observable<FileResultBean> upload(@Part("uid") RequestBody uid, @Part MultipartBody.Part file); //第二种方式上传头像 @POST("file/upload") @Multipart Observable<FileResultBean> upload2(@Query("uid") String uid, @Part MultipartBody.Part file); }
//工具包 解析json串的时候用
public class Util { private volatile static Util util=null; private Util(){ } public static Util getmInstance(){ if (util==null){ synchronized (Util.class){ if (util==null){ util=new Util(); } } } return util; }
public Testservice getnetjson(String uri){ Retrofit retrofit = new Retrofit.Builder().baseUrl(uri).addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create
.build();
Testservive testservive = retrofit.create(Testservive.class); return testservive;
//上传头像的代码
File f=new File(Environment.getExternalStorageDirectory(),"a.jpg");
Testservive testservive = Util.getnetjson(Getnet.net);
//如果用第二种方式上传头像 可以不用写 RequestBody uidBody = RequestBody.create(MediaType.parse("multipart/form-data"),"10134"); //f为file路径 MultipartBody.Part filePart = MultipartBody.Part.createFormData("file",f.getName(),RequestBody.create(MediaType.parse("application/octet-stream"),f )); //第一种方式上传头像 Observable<FileResultBean> upload = testService.upload(uidBody, filePart); //第二种方式 上传头像 // Observable<FileResultBean> upload = apiService.upload2("10134", filePart); upload.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<FileResultBean>() { @Override public void accept(FileResultBean fileResultBean) throws Exception { } });