У меня есть этот код: AndroidAndroid HTTPClient вызывает приложение к сбою
package com.XXX
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;
import java.io.IOException;
public class DataProvider {
String baseUri;
DataProvider() {
baseUri = "http://www.XXX.de/XXX/";
}
public String requestUser(String userName) {
HttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet(baseUri + "get.php?userName=" + userName);
ResponseHandler<String> handler = new BasicResponseHandler();
String result = "";
try {
result = httpclient.execute(request, handler);
} catch (ClientProtocolException e) {
result = "ClientProtocolException was thrown";
} catch (IOException e) {
result = "IOException was thrown";
}
finally {
httpclient.getConnectionManager().shutdown();
}
return result;
}
}
и в моей деятельности
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_reload_package) {
String response = dataProvider.requestUser("BKDJSHDD-1912772-DIKDS-19172");
browser.loadDataWithBaseURL("file:///android_asset/", response, "text/html", "UTF-8", "file:///android_asset/index.html");
return true;
}
return super.onOptionsItemSelected(item);
}
Щелкнув пункт меню вызывает приложение к сбою. Объекты browser
и dataProvider
на 100% правильно объявлены. Я тестирую приложение на своем устройстве, потому что мой компьютер работает слабым, чтобы запустить эмулятор, поэтому нет выхода на консоль.
Любые идеи? ..
Проверьте конструктор DataProvider. Существует орфографическая ошибка – Msk
«поэтому нет выхода на консоль» - вы можете получить в LogCat как с оборудования, так и с эмуляторов. Фактически, это тот же процесс. – CommonsWare
Исходя из кода, предоставленного в настоящее время, похоже, что вы используете сетевой запрос в основном потоке. Вы не можете этого сделать (http://stackoverflow.com/q/6343166/390989). – eldarerathis