In my app I have to send some photos and some datas to the server. Here is my flow: First I select the mekanik photo and in the response gives me a trans_id, and then in the same retrofit callback I have to send photo elektronik and it will send me the same trans_id in the response. In the elektronik callback I will send some other data together with the photos using the trans_id. Here what I have:
private void UploadPhotoMekanik() {
SharedPreferences editor = getSharedPreferences(MY_PREFERENCE, MODE_PRIVATE);
String token = editor.getString("token", "");
Intent intent = getIntent();
machineid = Objects.requireNonNull(intent.getExtras()).getString("machineId");
RequestBody fileImage = RequestBody.create(file, MediaType.parse("image/png"));
MultipartBody.Part mImagePart = MultipartBody.Part.createFormData("mekanik", file.getName(), fileImage);
PostRetrivers uploadPhotoMekanik = new PostRetrivers();
Callback<Integer> callback = new Callback<Integer>() {
@Override
public void onResponse(Call<Integer> call, Response<Integer> response) {
System.out.println();
String id = response.body().toString();
intent.putExtra("id", id);
UploadPhotoElektronik();
}
@Override
public void onFailure(Call<Integer> call, Throwable t) {
Toast.makeText(PutWeeklyDatasActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}
};
RequestBody mekID = RequestBody.create(machineid, MediaType.parse("text/plain"));
uploadPhotoMekanik.sendPhotoMekanik(callback, mImagePart, mekID, token);
}
private void UploadPhotoElektronik() {
SharedPreferences editor = getSharedPreferences(MY_PREFERENCE, MODE_PRIVATE);
String token = editor.getString("token", "");
Intent i = getIntent();
trans_id = Objects.requireNonNull(i.getExtras()).getString("id");
RequestBody fileImage = RequestBody.create(file, MediaType.parse("image/png"));
MultipartBody.Part mImageElek = MultipartBody.Part.createFormData("elektronik", file.getName(), fileImage);
PostRetrivers uploadPhotoElektronik = new PostRetrivers();
Callback<Integer> callback = new Callback<Integer>() {
@Override
public void onResponse(Call<Integer> call, Response<Integer> response) {
System.out.println();
SendRegData();
}
@Override
public void onFailure(Call<Integer> call, Throwable t) {
Toast.makeText(PutWeeklyDatasActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}
};
RequestBody elekID = RequestBody.create(machineid, MediaType.parse("application/json"));
RequestBody transID = RequestBody.create(trans_id, MediaType.parse("application/json"));
uploadPhotoElektronik.sendPhotoElektronik(callback, mImageElek, elekID, transID, token);
}
private void SendRegData() {
SharedPreferences editor = getSharedPreferences(MY_PREFERENCE, MODE_PRIVATE);
String token = editor.getString("token", "");
//Intent i = getIntent();
//i.putExtra("trans_id", trans_id);
//trans_id = Objects.requireNonNull(i.getExtras()).getString("trans_id");
PostRetrivers sendRegDatas = new PostRetrivers();
RegData data = new RegData();
Callback<RegData> callback = new Callback<RegData>() {
@Override
public void onResponse(Call<RegData> call, Response<RegData> response) {
System.out.println();
}
@Override
public void onFailure(Call<RegData> call, Throwable t) {
Toast.makeText(PutWeeklyDatasActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}
};
sendRegDatas.sendRegData(callback, trans_id, machineid, data, token);
}
For the photo mekanik everything works fine, in the response came the trans_id; but for the elektronik case I have code = 500 Internal Server Error. In the postman everything works fine: