我正在前台服务中使用Retrofit进行放置请求,每当我发送多于1张图像时,它就会超时E/UploadPhotosService: onFailure: Failed to upload image
java.net.SocketTimeoutException: timeout
private void uploadImages(ArrayList<String> uploadUrls, ArrayList<String> selectedImagesList){
for(int i = 0; i <uploadUrls.size(); i++){
File file = new File(String.valueOf(Uri.parse(selectedImagesList.get(i))));
RequestBody requestBody = RequestBody.create(MediaType.parse("image/jpeg"), file);
RetrofitInterfaces.IUploadImages service = RetrofitClientInstance.getRetrofitInstance()
.create(RetrofitInterfaces.IUploadImages.class);
Call<Void> call = service.listRepos(uploadUrls.get(i), requestBody);
call.enqueue(new Callback<Void>() {
@Override
public void onResponse(@NonNull Call<Void> call, @NonNull Response<Void> response) {
if(response.code() == 200){
Log.d(TAG, "onResponse: Successfully uploaded image!");
}
}
@Override
public void onFailure(@NonNull Call<Void> call, @NonNull Throwable t) {
Log.e(TAG, "onFailure: Failed to upload image", t);
}
});
}
}
调用改装请求:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
uploadingProgressNotification();
if(intent.getExtras() != null){
mUploadUrls = Parcels.unwrap(intent.getParcelableExtra("upload_urls"));
mSelectedImages = Parcels.unwrap(intent.getParcelableExtra("selected_images"));
uploadImages(mUploadUrls, mSelectedImages); <--- network call here
}
return START_NOT_STICKY;
}
我也尝试过使用.execute();
,但这根本不起作用。 .enqueue
正在处理一幅图像,有时是两幅图像。
在常规活动中效果很好。这是由前台服务中的上传方式的限制所引起的吗?
okHttpBuilder.connectTimeout(3, TimeUnit.MINUTES);
okHttpBuilder.readTimeout(3, TimeUnit.MINUTES);
okHttpBuilder.writeTimeout(3, TimeUnit.MINUTES);