Я новичок в Android, и я следил за учебником о том, как использовать Gson. (http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html)Проблема с использованием Gson (Android)
Я попытался получить следующий объект json. (http://api.openweathermap.org/data/2.5/weather?q=London,uk)
Это мой код:
MainClass:
public class MainActivity extends Activity {
String url = "http://api.openweathermap.org/data/2.5/weather?q=London,uk";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
InputStream source = retrieveStream(url);
Gson gson = new Gson();
Reader reader = new InputStreamReader(source);
Weather weather = gson.fromJson(reader, Weather.class);
Toast.makeText(this, weather.clouds, Toast.LENGTH_SHORT).show();
}
private InputStream retrieveStream(String url) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet getRequest = new HttpGet(url);
try {
HttpResponse getResponse = client.execute(getRequest);
final int statusCode = getResponse.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
Log.w(getClass().getSimpleName(),
"Error " + statusCode + " for URL " + url);
return null;
}
HttpEntity getResponseEntity = getResponse.getEntity();
return getResponseEntity.getContent();
}
catch (IOException e) {
getRequest.abort();
Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
}
return null;
}}
WeatherClass:
public class Weather {
public double lon;
public double lat;
public String country;
public int speed;
@SerializedName("all")
public int clouds;
}
Если я бегу это на эмуляторе, мой App "к сожалению, остановил" и LogCat говорят об этом:
Я нашел много о проблемах gson на StackOverflow, но ничего не решить мою проблему. Так что я делаю неправильно?
Вы создаете/инициируете интернет-запрос в mainThread. –