Android 是否可以使用改装将单个项目作为多部分传递? @Multipart @POST(“/api/add deal/”) public void addDeal(@Body-Deal-Deal,@Part(“image”)类型文件映像,回调);
我只想将图像作为多部分发送,其余部分按原样发送。有没有可能的方法?即使我试图在我的交易模型中添加TypedFile,但无法使用@part进行注释,似乎您可以将@Body作为TypedString发送。Android 是否可以使用改装将单个项目作为多部分传递? @Multipart @POST(“/api/add deal/”) public void addDeal(@Body-Deal-Deal,@Part(“image”)类型文件映像,回调);,android,retrofit,multipart,Android,Retrofit,Multipart,我只想将图像作为多部分发送,其余部分按原样发送。有没有可能的方法?即使我试图在我的交易模型中添加TypedFile,但无法使用@part进行注释,似乎您可以将@Body作为TypedString发送。 例如,将“@Body Deal”转换为JSON字符串,并将其作为TypedString发送 详情: @Multipart @POST(“/api/v1/articles/”) 可观察的上载文件(@Part(“author”)类型字符串authorString, @零件(“照片”)类型文件照片文件)
例如,将“@Body Deal”转换为JSON字符串,并将其作为TypedString发送 详情:
@Multipart
@POST(“/api/v1/articles/”)
可观察的上载文件(@Part(“author”)类型字符串authorString,
@零件(“照片”)类型文件照片文件);
是的,可以使用哈希映射进行Partmap注释。比如说-
@Multipart
@POST("/api/v1/articles/")
Observable<Response> uploadFile(@Part("author") TypedString authorString,
@Part("photo") TypedFile photoFile);
将参数添加到hashmap-
public static RequestBody ImageToRequestBody(File file) { //for image file to request body
return RequestBody.create(MediaType.parse("image/*"),file);
}
public static RequestBody StringToRequestBody(String string){ // for string to request body
return RequestBody.create(MediaType.parse("text/plain"),string);
}
希望这对我有帮助。这对我很有用:
公共接口{
@多部分
@POST(“/api/Accounts/editaccount”)
调用editUser(@Header(“Authorization”)字符串Authorization、@Part(“file\”;filename=\“pp.png\”)RequestBody文件、@Part(“FirstName”)RequestBody fname、@Part(“Id”)RequestBody Id);
}
File File=新文件(imageUri.getPath());
RequestBody fbody=RequestBody.create(MediaType.parse(“image/*”),文件);
RequestBody name=RequestBody.create(MediaType.parse(“text/plain”)、firstNameField.getText().toString();
RequestBody id=RequestBody.create(MediaType.parse(“text/plain”)、AZUtils.getUserId(this));
Call Call=client.editUser(AZUtils.getToken(this),fbody,name,id);
call.enqueue(新回调(){
@凌驾
公共响应(改装。响应,改装){
printObject(response.body());
}
@凌驾
失效时的公共无效(可丢弃的t){
t、 printStackTrace();
}
});
谢谢。让我试试。我不明白!:/你试了什么?请求正文中是否有任何问题?无法使用改装2.0。使用1+
@Multipart
@POST("/api/add-deal/")
Call<Response> addDeal(@PartMap
HashMap<String, RequestBody> hashMap);
public static RequestBody ImageToRequestBody(File file) { //for image file to request body
return RequestBody.create(MediaType.parse("image/*"),file);
}
public static RequestBody StringToRequestBody(String string){ // for string to request body
return RequestBody.create(MediaType.parse("text/plain"),string);
}
hashMap.put("photo",ImageToRequestBody(imageFile)); //your imageFile to Request body.
hashMap.put("user_id",StringToRequestBody("113"));
//calling addDeal method
apiInterface.addDeal(hashMap);
public interface ApiInterface {
@Multipart
@POST("/api/Accounts/editaccount")
Call<User> editUser (@Header("Authorization") String authorization, @Part("file\"; filename=\"pp.png\" ") RequestBody file , @Part("FirstName") RequestBody fname, @Part("Id") RequestBody id);
}
File file = new File(imageUri.getPath());
RequestBody fbody = RequestBody.create(MediaType.parse("image/*"), file);
RequestBody name = RequestBody.create(MediaType.parse("text/plain"), firstNameField.getText().toString());
RequestBody id = RequestBody.create(MediaType.parse("text/plain"), AZUtils.getUserId(this));
Call<User> call = client.editUser(AZUtils.getToken(this), fbody, name, id);
call.enqueue(new Callback<User>() {
@Override
public void onResponse(retrofit.Response<User> response, Retrofit retrofit) {
AZUtils.printObject(response.body());
}
@Override
public void onFailure(Throwable t) {
t.printStackTrace();
}
});