上传文件的工具类

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'


//ok拦截日志

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());
            }
            }
        });






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值