Привет, я новичок в разработке Android и сейчас пытаюсь установить соединение со своей базой данных, чтобы иметь возможность работать с данными на своем телефоне.
Я использую OkHttp и mysqli с php.
Я написал обработчик, который обращается к страницам .php и выполняет вызовы базы данных.
public class OkHttpHandler extends AsyncTask {
private OkHttpClient client = null;
public String latestMessage = "";
public OkHttpHandler(){
client = new OkHttpClient();
}
@Override
protected String doInBackground(String... params) {
Request.Builder builder = new Request.Builder();
builder.url(params[0].toString());
Request request = builder.build();
try{
Response response = client.newCall(request).execute();
latestMessage = response.body().string();
return response.body().string();
} catch(Exception e){
e.printStackTrace();
}
//latestMessage = "failed";
return null;
}
И я хочу сделать что-то вроде этого:
public int getSongwriterId(String songwriter) {
OkHttpHandler okHttpHandler = new OkHttpHandler();
okHttpHandler.execute(url_get_songwriter_id + "?songwriter=" + songwriter);
String responseString = "";
while(responseString == "") {
responseString = okHttpHandler.latestMessage;
}
okHttpHandler.cancel(true);
Songwriter s = getSongwriterFromJSON(responseString);
return s.getId();
}
Теперь я знаю, что это уродливое while(true) — дерьмовое решение. Но как мне это сделать, чтобы я был на 100% уверен, что получил строку ответа до того, как передать ее в "getSongwriterFromJSON"?
Я действительно не понимаю, как это должно работать.
Код работает нормально, когда я отлаживаю его шаг за шагом, но приложение время от времени просто выдает черный экран без отладки. Я предполагаю, что это из-за цикла while(true), который, вероятно, просто запускается и запускается, и тактирует поток, так что мой фоновый поток просто умирает - я действительно больше не знаю.
Пожалуйста, если вы оказываете помощь, объясните, что я делаю неправильно и как мне следует поступить правильно. Спасибо.
Отредактируйте используемый php-файл:
Подробнее здесь: https://stackoverflow.com/questions/439 ... l-database
OkHttp — Android получает данные из базы данных MySQL ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1736726773
Anonymous
Привет, я новичок в разработке Android и сейчас пытаюсь установить соединение со своей базой данных, чтобы иметь возможность работать с данными на своем телефоне.
Я использую OkHttp и mysqli с php.
Я написал обработчик, который обращается к страницам .php и выполняет вызовы базы данных.
public class OkHttpHandler extends AsyncTask {
private OkHttpClient client = null;
public String latestMessage = "";
public OkHttpHandler(){
client = new OkHttpClient();
}
@Override
protected String doInBackground(String... params) {
Request.Builder builder = new Request.Builder();
builder.url(params[0].toString());
Request request = builder.build();
try{
Response response = client.newCall(request).execute();
latestMessage = response.body().string();
return response.body().string();
} catch(Exception e){
e.printStackTrace();
}
//latestMessage = "failed";
return null;
}
И я хочу сделать что-то вроде этого:
public int getSongwriterId(String songwriter) {
OkHttpHandler okHttpHandler = new OkHttpHandler();
okHttpHandler.execute(url_get_songwriter_id + "?songwriter=" + songwriter);
String responseString = "";
while(responseString == "") {
responseString = okHttpHandler.latestMessage;
}
okHttpHandler.cancel(true);
Songwriter s = getSongwriterFromJSON(responseString);
return s.getId();
}
Теперь я знаю, что это уродливое while(true) — дерьмовое решение. Но как мне это сделать, чтобы я был на 100% уверен, что получил строку ответа до того, как передать ее в "getSongwriterFromJSON"?
Я действительно не понимаю, как это должно работать.
Код работает нормально, когда я отлаживаю его шаг за шагом, но приложение время от времени просто выдает черный экран без отладки. Я предполагаю, что это из-за цикла while(true), который, вероятно, просто запускается и запускается, и тактирует поток, так что мой фоновый поток просто умирает - я действительно больше не знаю.
Пожалуйста, если вы оказываете помощь, объясните, что я делаю неправильно и как мне следует поступить правильно. Спасибо.
Отредактируйте используемый php-файл:
Подробнее здесь: [url]https://stackoverflow.com/questions/43941149/okhttp-android-get-data-from-mysql-database[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия