关于,我必须上传这些数据。
我有这段代码。
客户创建
public BeeMappingClient(String url){
retrofit= new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
conexion=retrofit.create(Conexion.class);
}
接口
@Multipart
@POST("task")
Call<ResponsetTask> API_Task(@Header("Authorization") String key,
@Part MultipartBody.Part multipartImage,
@Part("message") RequestBody message ,
@Part("filecomment") RequestBody filecomment,
@Part("api_token") RequestBody api_token,
@Part("user_id") RequestBody user_id);
然后致电
File file=new File(path);
MultipartBody.Part[] multipartImageList = new MultipartBody.Part[1];
RequestBody surveyBody = RequestBody.create(MediaType.parse("image/*"), file);
multipartImageList[0] = MultipartBody.Part.createFormData("image", "image.jpg", surveyBody);
RequestBody message = RequestBody.create(MediaType.parse("message"), Constantes.MESSAGE);
RequestBody filecomment = RequestBody.create(MediaType.parse("filecomment"), Constantes.FILECOMMENT);
RequestBody api_token = RequestBody.create(MediaType.parse("api_token"),Constantes.api_token);
RequestBody user_id = RequestBody.create(MediaType.parse("user_id"), Integer.toString(Constantes.id));
Call<ResponsetTask> call = conexion.API_Task(Constantes.AUTH,multipartImageList[0],message,filecomment,api_token,user_id);
call.enqueue(new Callback<ResponsetTask>() {
@Override
public void onResponse(Call<ResponsetTask> call, Response<ResponsetTask> response) {
Constantes.api_task=response.body().getTaskId();
}
@Override
public void onFailure(Call<ResponsetTask> call, Throwable t) {
}
});
问题是它什么也不做,如果我进行调试,直到到达call.enqueu为止一切似乎都进行得很顺利……我应该输入OnResques或OnFailure,但它不仅会结束好像它不存在的方法。 我该怎么办?,这是上传此数据的最佳方法?。 在此先感谢您提供的任何帮助或指导。
答案 0 :(得分:0)
RequestBody surveyBody = RequestBody.create(MediaType.parse("multipart/form-data"), file);
用“ multipart / form-data”替换“ image / *”
答案 1 :(得分:0)
尝试一下-对于多方请求
在界面
@Multipart
@POST("task")
Call<ResponseBody> submitRegistration(@Part MultipartBody.Part body,
@Part("message") RequestBody message)
传递值-
File file = new File(path);
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("image", file.getName(), requestFile);
RequestBody message = RequestBody.create(MediaType.parse("text/plain"), Constantes.MESSAGE);
致电-
Call<ResponseBody> call = service.callApi(body,message);