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 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
public interface Testserivce {
@Multipart
@POST("quarter/publishVideo")
Observable<Upload> faBuDaunzi(@PartMap Map<String, RequestBody> params);
}
//添加map集合的工具类
public class HttpParameterBuilder {
private static HttpParameterBuilder mParameterBuilder;
private static Map<String, RequestBody> params;
/**
* 构建私有方法
*/
private HttpParameterBuilder() {
}
/**
* 初始化对象
*/
public static HttpParameterBuilder newBuilder() {
if (mParameterBuilder == null) {
mParameterBuilder = new HttpParameterBuilder();
if (params == null) {
params = new HashMap<>();
}
}
return mParameterBuilder;
}
/**
* 添加参数
* 根据传进来的Object对象来判断是String还是File类型的参数
*/
public HttpParameterBuilder addParameter(String key, Object o) {
if (o instanceof String) {
RequestBody body = RequestBody.create(MediaType.parse("text/plain"), (String) o);
params.put(key, body);
} else if (o instanceof File) {
RequestBody body = RequestBody.create(MediaType.parse("image/*"), (File) o);
params.put(key + "\"; filename=\"" + ((File) o).getName() + "", body);
}
return this;
}
/**
* 初始化图片的Uri来构建参数
* 一般不常用
* 主要用在拍照和图库中获取图片路径的时候
*/
public HttpParameterBuilder addFilesByUri(String key, List<Uri> uris) {
for (int i = 0; i < uris.size(); i++) {
File file = new File(uris.get(i).getPath());
RequestBody body = RequestBody.create(MediaType.parse("image/*"), file);
params.put(key + i + "\"; filename=\"" + file.getName() + "", body);
}
return this;
}
/**
* 构建RequestBody
*/
public Map<String, RequestBody> bulider() {
return params;
}
}
//请求网络的工具类
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;
}
OkHttpClient httpClient = new OkHttpClient.Builder().
addNetworkInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY))
.addInterceptor(new MyIntercepter())
.build();
public Testserivce getnetjson(String uri){ Retrofit retrofit = new Retrofit.Builder().baseUrl(uri)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.client(httpClient)
.build();
Testserivce testservive = retrofit.create(Testserivce.class);
return testservive;}
}
//m层请求网络数据
HttpParameterBuilder params = HttpParameterBuilder.newBuilder();
Map<String, RequestBody> bulider = params.addParameter("uid", "10160")
.addParameter("videoFile", file1)
.addParameter("coverFile", file)
.addParameter("videoDesc",s).bulider();
Util.getmInstance().getnetjson(Getnet.net)
.faBuDaunzi(bulider)
.subscribeOn(Schedulers.io()).
observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<Upload>() {
@Override
public void accept(Upload upload) throws Exception {
if (upload.getCode().equals("0")){
Toast.makeText(Main2Activity.this, "成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(Main2Activity.this, upload.getMsg(), Toast.LENGTH_SHORT).show();
Log.d("哈哈66666", "accept: "+upload.getMsg());
}
}
});