Хотел загрузить файл на сервер..но с потоками проблемы... пробовал без ProgressDialog-а а файл на сервер все равно не загружается.Вот код.С ProgressDialog получаю ошибку.А без ProgressDialog не вижу происходит ли что нибудь вообще.
class MyAsync extends AsyncTask<Void,Void,Void>{
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
progressDialog.show();
}
@Override
protected Void doInBackground(Void... voids) {
progressDialog = new ProgressDialog(getApplicationContext());
progressDialog.setTitle("загрузка");
progressDialog.setMessage("Загрузка");
publishProgress();
String content_type = getMimeType(file.getPath());
OkHttpClient client = new OkHttpClient();
RequestBody fileBody = RequestBody.create(MediaType.parse(content_type),file);
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("type",content_type)
.addFormDataPart("uploaded_file",file.getName().toString(),fileBody)
.build();
Request request = new Request.Builder()
.url("http://urlll")
.post(requestBody)
.build();
try {
Response response = client.newCall(request).execute();
if(!response.isSuccessful()){
throw new IOException("Error :"+response);
}
}catch(IOException ex){}
return null;
}
}
делал и с Thred-ом
Thread t = new Thread(new Runnable() {
@Override
public void run() {
progressDialog = new ProgressDialog(getApplicationContext());
progressDialog.setTitle("загрузка");
progressDialog.setMessage("Загрузка");
publishProgress();
String content_type = getMimeType(file.getPath());
OkHttpClient client = new OkHttpClient();
RequestBody fileBody = RequestBody.create(MediaType.parse(content_type),file);
RequestBody requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("type",content_type)
.addFormDataPart("uploaded_file",file.getName().toString(),fileBody)
.build();
Request request = new Request.Builder()
.url("http://urlll")
.post(requestBody)
.build();
try {
Response response = client.newCall(request).execute();
if(!response.isSuccessful()){
throw new IOException("Error :"+response);
}
}catch(IOException ex){}
}
});
t.start();
Но опять получаю ошибку с потоком.Вроде делаю на стороне от основного потока.Но все равно выходит ошибка что это в основном потоке.
В случае с AsyncTask, Вам следует перенести инициализацию progressDialog в метод onPreExecute(), а скрытие progressDialog в метод onPostExecute(). В Вашем случае использование метода onProgressUpdate - не имеет смысла.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть объектУ него есть несколько объектов, которые содержат в себе переменные типа List<String>
Добрый день! Нужно выбрать сразу несколько записей из select, и отправить запрос
Доброго времени суток, форумчанеПо дипломному проекту мне задали создание сайта, на котором можно будет распространять платные курсы, которые...