-4
Я пытаюсь получить среднюю цену 30d USD для биткойнов отсюда: http://api.bitcoincharts.com/v1/weighted_prices.json. Код Json, который у меня есть, не работает в try/catch, и ошибка является нулевой (я попытался изучить другие вопросы, но все они, похоже, возвращают ошибки, тогда как мои просто возвращают нуль):Android: JSON не работает, Log.e возвращает нуль
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dogewidget);
TextView btctest = (TextView) findViewById(R.id.title);
//Create a new HTTP Client
DefaultHttpClient httpclient = new DefaultHttpClient();
//Setup the get request
HttpPost httppost = new HttpPost("http://api.bitcoincharts.com/v1/weighted_prices.json");
//Depending on web service
httppost.setHeader("Content-type", "application/json");
InputStream inputStream = null;
String result = null;
try {
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
inputStream = entity.getContent();
// json is UTF-8 by default
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
result = reader.readLine();
JSONObject jObject = new JSONObject(result);
JSONObject jsubObject = jObject.getJSONObject("USD");
String btcjson = jsubObject.getString("30d");
btctest.setText(btcjson);
} catch (Exception e) {
e.printStackTrace();
Log.e("error", "" + e.getMessage());
btctest.setText("Error " + e.getMessage());
} finally {
try {
if (inputStream != null) inputStream.close();
} catch (Exception squish) {
}
}
}
}
Любая помощь будет оценена! Благодарю.
Что означает «нуль»? Означает ли это исключение NullPointerException? Если это так, вам нужно опубликовать трассировку стека. –
Использовать 'AsyncTask' для выполнения вашего веб-звонка – SathishKumar
Возможно, я ошибаюсь, но, похоже, я помню, если вы вызовете' e.printStackTrace() ', оно очистит сообщение. Это означает, что когда вы пытаетесь использовать 'Log.e (...)' в своем коде с 'e.getMessage()', он просто возвращает «null» в качестве строки сообщения. Нет смысла использовать 'Log.e (...)' в этой точке, так как 'e.printStackTrace()' будет выгружать всю трассировку стека исключений, включая сообщение и причину. – Squonk