retrofit 上传文件, 新方式 传的是数组 或者文件

retrofit 上传文件, 新方式 传的是数组 或者文件

接口 新的写法

@POST(Urls.fauth)
public Call fAuth(@Body MultipartBody multipartBody);
构造MultipartBody
public void fLoginPost(final Context context, String grantType, String userName, String delta, byte[] imageBest, byte[] imageEnv,
String scope) {
final AuthLoginNetInf authLoginNetInf = new ISRestAdapter
(context, BuildConfig.API_URL, AuthLoginNetInf.class).create();

if (null == authLoginNetInf) {
    handleResult(R.string.network_error);
    return;
}

MultipartBody.Part bestPart = MultipartBody.Part.
        createFormData("faces", imageBest.length + "", RequestBody.create(_PNG, imageBest));
MultipartBody.Part envPart = MultipartBody.Part.
        createFormData("faces", imageEnv.length + "", RequestBody.create(_PNG, imageEnv));
MultipartBody.Part deltaPart = MultipartBody.Part.
        createFormData("params", null, RequestBody.create(_PLAIN, delta));

MultipartBody.Builder builder = new MultipartBody.Builder();
builder.setType(MultipartBody.FORM);
builder.addFormDataPart("grant_type", grantType);
builder.addFormDataPart("username", userName);
builder.addFormDataPart("scope", scope);
builder.addPart(deltaPart);
builder.addPart(bestPart);
builder.addPart(envPart);
MultipartBody multipartBody = builder.build();

Call<AuthToken> call = authLoginNetInf.fAuth(multipartBody);

构造 MediaType
private static final MediaType _PLAIN = MediaType.parse(“text/plain”);

private static final MediaType _PNG = MediaType.parse(“image/png”);
faces && params 是数组 ,所以用MultipartBody.Part,如果是文本 就是可以使用addFormDataPart(“key”,value);
MultipartBody.Part.createFormData(“key”,filename,RequestBody) filename 可为空,如果为空,就相当于addFormDataPart(“key”,value);

//创建Multipart, fieldName为表单字段名
public static MultipartBody.Part createFilePart(String fieldName, File file) {
RequestBody requestFile = RequestBody.create(MediaType.parse(“multipart/form-data”), file);
MultipartBody.Part body = MultipartBody.Part.createFormData(fieldName, file.getName(), requestFile);
return body;
}

//创建表单的普通字段
public static RequestBody createFormBody(String content) {
    RequestBody body = RequestBody.create(MediaType.parse("multipart/form-data"), content);
    return body;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值