Я добавил в свое приложение экран, на котором пользователь загружает изображение из галереи или камеры с некоторыми деталями и отправляет его на сервер, но проблема заключается в том, что когда я нажимаю кнопку «Отправить» каждый раз, когда я получаю «SocketTimeOutException», но почта отправляется на сервер. Пожалуйста, помогите.
Я мог загрузить форму раньше, но не сейчас. В чем проблема, которую я не могу получить.
Код:
private void execMultipartPost() throws Exception {
RequestBody requestBody;
if (filePath != null) {
File file = new File(filePath);
String contentType = file.toURL().openConnection().getContentType();
fileBody = RequestBody.create(MediaType.parse(contentType), file);
filename = "file_" + System.currentTimeMillis() / 1000L;
Log.d("TAG", "execMultipartPost: " + filePath);
requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("destination_type", selectedDescription)
.addFormDataPart("admin_id", admin_id)
.addFormDataPart("date", txtDate)
.addFormDataPart("time", txtTime)
.addFormDataPart("description", txtDescription)
.addFormDataPart("image", filename + ".jpg", fileBody)
.addFormDataPart("user_id", user_id)
.addFormDataPart("api_token", api_token)
.build();
} else {
requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("destination_type", selectedDescription)
.addFormDataPart("admin_id", admin_id)
.addFormDataPart("date", selectdate.getText().toString())
.addFormDataPart("time", selecttimehr.getText().toString())
.addFormDataPart("description", description.getText().toString())
.addFormDataPart("image", "null")
.addFormDataPart("user_id", user_id)
.addFormDataPart("api_token", api_token)
.build();
}
okhttp3.Request request = new okhttp3.Request.Builder()
.url(Constansts.LETS_MELDEN)
.post(requestBody)
.build();
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, final IOException e) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
progressDialog.dismiss();
Toast.makeText(getActivity(), getResources().getString(R.string.txt_error_occured), Toast.LENGTH_SHORT).show();
e.printStackTrace();
}
});
}
@Override
public void onResponse(Call call, final okhttp3.Response response) throws IOException {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
try {
ResponseBody responseBody = response.body();
String content = responseBody.string();
Log.e("TAG", "pic upload " + content);
JSONObject jsonObject = new JSONObject(content);
if (jsonObject.has("success")) {
Toast.makeText(getActivity(), "mail sent successfully.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(getActivity(), jsonObject.getString("error"), Toast.LENGTH_SHORT).show();
}
description.setText(" ");
txt_picture_preview.setImageResource(android.R.color.transparent);
selecttypedec.setSelection(0);
progressDialog.dismiss();
// Log.d("TAG", "response of image: " + response.body().string());
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
});
}