Пытаюсь переделать под себя проект как работать с mysql в android. Все переписал под себя, но выходить данная ошибка
06-03 13:03:49.880 10844-10884/com.example.andrey.projectudsu
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.example.andrey.projectudsu, PID: 10844
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:848)
Caused by: java.lang.NoSuchMethodError: org.apache.http.impl.client.DefaultHttpClient.execute
at parser.JSONParser.makeHttpRequest(JSONParser.java:53)
at com.example.andrey.projectudsu.RatingActivity$LoadAllAbiturients.doInBackground(RatingActivity.java:98)
at com.example.andrey.projectudsu.RatingActivity$LoadAllAbiturients.doInBackground(RatingActivity.java:75)
at android.os.AsyncTask$2.call(AsyncTask.java:288)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:848)
mainactivity
package com.example.andrey.projectudsu;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button ratingBtn;
Button addAbiturBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ratingBtn = (Button) findViewById(R.id.ratingBtn);
addAbiturBtn = (Button) findViewById(R.id.addAbiturBtn);
}
public void rating(View v) {
Intent intent = new Intent(getApplicationContext(), RatingActivity.class);
startActivity(intent);
}
public void addAbitur(View v) {
Intent intent = new Intent(getApplicationContext(), AddAbiturActivity.class);
startActivity(intent);
}
}
addabituractivity
package com.example.andrey.projectudsu;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.example.andrey.projectudsu.R;
import parser.JSONParser;
import org.apache.http.*;
import org.apache.http.message.*;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class AddAbiturActivity extends Activity {
private ProgressDialog pDialog;
JSONParser jsonParser = new JSONParser();
EditText ETlastname;
EditText ETfirstname;
EditText ETpatronymic;
EditText ETege_points;
String lastname = ETlastname.getText().toString();
String firstname = ETfirstname.getText().toString();
String patronymic = ETpatronymic.getText().toString();
String ege_points = ETege_points.getText().toString();
private static String url_add_abiturient = "http://192.168.43.224/add_abiturient.php";
private static final String TAG_SUCCESS = "success";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_abitur);
ETlastname = (EditText) findViewById(R.id.lastName);
ETfirstname = (EditText) findViewById(R.id.firstname);
ETpatronymic = (EditText) findViewById(R.id.patronymic);
ETege_points = (EditText) findViewById(R.id.ege_points);
Button addIntoBtn = (Button) findViewById(R.id.addIntoBDBtn);
addIntoBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new addNewAbiturient().execute();
}
});
}
/**
* Фоновый Async Task создания нового продукта
**/
class addNewAbiturient extends AsyncTask<String, String, String> {
/**
* Перед согданием в фоновом потоке показываем прогресс диалог
**/
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(AddAbiturActivity.this);
pDialog.setMessage ("Добавление абитуриента...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
/**
* Добавление абитуриента
**/
protected String doInBackground(String[] args) {
// Заполняем параметры
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("lastname", lastname));
params.add(new BasicNameValuePair("firstname", firstname));
params.add(new BasicNameValuePair("patronymic", patronymic));
params.add(new BasicNameValuePair("ege_points", ege_points));
// получаем JSON объект
JSONObject json = jsonParser.makeHttpRequest(url_add_abiturient, "POST", params);
Log.d("Create Response", json.toString());
try {
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// абитуриент успешно добавлен создан
Intent i = new Intent(getApplicationContext(), RatingActivity.class);
startActivity(i);
// закрываем это окно
finish();
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
/**
* После оконачния скрываем прогресс диалог
**/
protected void onPostExecute(String file_url) {
pDialog.dismiss();
}
}
}
ratingactivity
package com.example.andrey.projectudsu;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import parser.JSONParser;
import org.apache.http.*;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
public class RatingActivity extends ListActivity {
private ProgressDialog pDialog;
// Создаем JSON парсер
JSONParser jParser = new JSONParser();
ArrayList<HashMap<String, String>> abiturientsList;
// url получения списка всех продуктов
private static String url_all_abiturients = "http://192.168.43.224/get_all_abiturients.php";
// JSON Node names
private static final String TAG_SUCCESS = "success";
private static final String TAG_ABITURIENTS = "abiturients";
private static final String TAG_ID_ABITURIENT = "abiturient";
private static final String TAG_LASTNAME = "lastname";
private static final String TAG_FIRSTNAME = "firstname";
private static final String TAG_EGE_POINTS = "ege_points";
// тут будет хранится список продуктов
JSONArray abiturients = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rating);
// Hashmap for ListView
abiturientsList = new ArrayList<HashMap<String, String>>();
// Загружаем список в фоновом потоке
new LoadAllAbiturients().execute();
// получаем ListView
ListView lv = getListView();
}
/**
* Фоновый Async Task для загрузки всех продуктов по HTTP запросу
* */
class LoadAllAbiturients extends AsyncTask<String, String, String> {
/**
* Перед началом фонового потока Show Progress Dialog
* */
/*@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(RatingActivity.this);
pDialog.setMessage("Загрузка списка. Подождите...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}*/
/**
* Получаем список абитуриентов из url
* */
protected String doInBackground(String... args) {
// Будет хранить параметры
List<NameValuePair> params = new ArrayList<NameValuePair>();
// получаем JSON строк с URL
JSONObject json = jParser. makeHttpRequest(url_all_abiturients, "GET",params);
Log.d("All abiturients: ", json.toString());
try {
// Получаем SUCCESS тег для проверки статуса ответа сервера
int success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// абитуриент найден
// Получаем масив из Абитуриентов
abiturients = json.getJSONArray(TAG_ABITURIENTS);
// перебор всех продуктов
for (int i = 0; i < abiturients.length(); i++) {
JSONObject c = abiturients.getJSONObject(i);
// Сохраняем каждый json елемент в переменную
String id_abiturient = c.getString(TAG_ID_ABITURIENT);
String lastname = c.getString(TAG_LASTNAME);
String firstname = c.getString(TAG_FIRSTNAME);
String ege_points = c.getString(TAG_EGE_POINTS);
// Создаем новый HashMap
HashMap<String, String> map = new HashMap<String, String>();
// добавляем каждый елемент в HashMap ключ => значение
map.put(TAG_ID_ABITURIENT, id_abiturient);
map.put(TAG_LASTNAME, lastname);
map.put(TAG_FIRSTNAME, firstname);
map.put(TAG_EGE_POINTS, ege_points);
// добавляем HashList в ArrayList
abiturientsList.add(map);
}
} else {
// абитуриент не найден
// Запускаем AddAbiturActivity
Intent i = new Intent(getApplicationContext(),
AddAbiturActivity.class);
// Закрытие всех предыдущие activities
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}
/**
* После завершения фоновой задачи закрываем прогрес диалог
* **/
protected void onPostExecute(String file_url) {
// закрываем прогресс диалог после получение все продуктов
//pDialog.dismiss();
// обновляем UI форму в фоновом потоке
runOnUiThread(new Runnable() {
public void run() {
/**
* Обновляем распарсенные JSON данные в ListView
* */
ListAdapter adapter = new SimpleAdapter(
RatingActivity.this, abiturientsList,
R.layout.activity_rating, new String[] { TAG_ID_ABITURIENT,
TAG_LASTNAME, TAG_FIRSTNAME, TAG_EGE_POINTS},
new int[] { R.id.id_abiturient, R.id.lname, R.id.fname, R.id.ege});
// обновляем listview
setListAdapter(adapter);
}
});
}
}
}
jsonparser
package parser;
import android.util.Log;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URLEncodedUtils;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.*;
import java.util.List;
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
// метод получение json объекта по url
// используя HTTP запрос и методы POST или GET
public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) {
// Создаем HTTP запрос
try {
// проверяем метод HTTP запроса
if(method == "POST"){
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}else if(method == "GET"){
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// пытаемся распарсить строку в JSON объект
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// возвращаем JSON строку
return jObj;
}
}
Ошибка возникает после запуска обоих intent.
DefaultHttpClient устарел с API 22 и полностью удалён с API 23.
Android 6.0 release removes support for the Apache HTTP client. If your app is using this client and targets Android 2.3 (API level 9) or higher, use the HttpURLConnection class instead. This API is more efficient because it reduces network use through transparent compression and response caching, and minimizes power consumption.
Используйте HttpURLConnection.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости