Привет! Я хочу отправить объект json и список изображений в веб-службу wcf. Я объявил функцию Post, как показано ниже
@Multipart
@POST(Post_Evaluation_Result)
Call<ResponseBody> sendEvalResultWithImages
(@Part("Username") RequestBody username,
@Part("Password") RequestBody pass,@Part("evaluation") RequestBody jsonObject,
@Part("EvaluationDetailsImageList") List<RequestBody> EvaluationDetailsImageList);
В приведенном выше коде List<RequestBody>
- это список изображений. Я пишу функцию для вызова выше функции.
public void sendImages(List<EvaluationDetail> evaluationDetails, JSONObject jsonObject, final ResultCallBack resultCallBack){
ApiService apiService=AppSingleton.getInstance(context).getApiService();
List<RequestBody> requestBodies=new ArrayList<>();
RequestBody requestFile;
for(int i=0;i<evaluationDetails.size();i++) {
if(evaluationDetails.get(i).getImage()!=null) {
File file = new File(evaluationDetails.get(i).getImage());
if (file != null) {
InputStream inputStream=null;
byte[] buf=null;
try {
inputStream = new FileInputStream(file);
buf = new byte[inputStream.available()];
while (inputStream.read(buf) != -1) ;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
requestFile = RequestBody.create(MediaType.parse("application/octet-stream"),buf);
requestBodies.add(requestFile);
}
}
}
RequestBody username=RequestBody.create(MediaType.parse("text/html; charset=UTF-8"),"username");
RequestBody password=RequestBody.create(MediaType.parse("text/html; charset=UTF-8"),"password");
RequestBody json=RequestBody.create(MediaType.parse("application/json"),jsonObject.toString());
if(questionIds!=null)
apiService.sendEvalResultWithImages(username,password,json,requestBodies).enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
resultCallBack.onGetResult(null);
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
resultCallBack.onFailedGet();
}
});
}
Я не знаю, приведенный выше код для установки тела запроса верен или нет. Когда я вызываю веб-службу, я получаю сообщение об ошибке 404, и если я объявляю POST-вызов веб-службы, как показано ниже, я получаю ошибку неверного запроса:
@Multipart
@POST(Post_Evaluation_Result)
Call<ResponseBody> sendEvalResultWithImages
(@Part("Username") String username,
@Part("Password") String pass,@Part("evaluation") JsonObject jsonObject,
@Part("EvaluationDetailsImageList") List<RequestBody> EvaluationDetailsImageList);
Я не знаю, где моя ошибка. пожалуйста, помогите мне