【发布时间】:2014-10-14 03:50:00
【问题描述】:
所以我有一段代码,我正在调用服务器以获取一个大的 JSON 文件(大约 2MB)并使用 Jackson JSON Parser 解析它。代码运行良好,但问题是我有时会收到 IOException “意外结束流”。所以我猜我在流式传输过程中失去了我的模拟器上的连接。无论如何我可以暂停流并恢复它吗?或者重新连接然后恢复流?谢谢。
private void createDatabase(String downloadUrl)
{
editor = sharedPref.edit();
String fieldName = "";
long id = 0;
String setNumber = "";
String cardName = "";
String type = "";
String attribute = "";
String level = "";
String category = "";
String attack = "";
String defense = "";
String description = "";
try
{
if (isOnline())
{
url = new URL(downloadUrl);
connection = (HttpURLConnection) url.openConnection();
connection.connect();
jsonfactory = new JsonFactory();
jsonParser = jsonfactory.createParser(connection.getInputStream());
while (jsonParser.nextToken() != JsonToken.END_ARRAY)
{
if (jsonParser.getCurrentToken() == JsonToken.FIELD_NAME)
{
fieldName = jsonParser.getCurrentName();
// if (fieldName.equals("id"))
// {
// jsonParser.nextToken();
// id = jsonParser.getIntValue();
// }
if (fieldName.equals("Set_Number"))
{
jsonParser.nextToken();
setNumber = jsonParser.getText();
}
else if (fieldName.equals("Card_Name"))
{
jsonParser.nextToken();
cardName = jsonParser.getText();
}
else if (fieldName.equals("Type"))
{
jsonParser.nextToken();
type = jsonParser.getText();
}
else if (fieldName.equals("Attribute"))
{
jsonParser.nextToken();
attribute = jsonParser.getText();
}
else if (fieldName.equals("Level"))
{
jsonParser.nextToken();
level = jsonParser.getText();
}
else if (fieldName.equals("Category"))
{
jsonParser.nextToken();
category = jsonParser.getText();
}
else if (fieldName.equals("Attack"))
{
jsonParser.nextToken();
attack = jsonParser.getText();
}
else if (fieldName.equals("Defense"))
{
jsonParser.nextToken();
defense = jsonParser.getText();
}
else if (fieldName.equals("Description"))
{
jsonParser.nextToken();
description = jsonParser.getText();
}
}
else if (jsonParser.getCurrentToken() == JsonToken.END_OBJECT)
{
id = db.insert(setNumber, cardName, type, attribute, level, category, attack, defense, description);
editor.putLong("lastId", id);
editor.commit();
}
}
}
}
catch (IOException e)
{
e.printStackTrace();
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if (connection != null)
connection.disconnect();
if (jsonParser != null)
{
try
{
jsonParser.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Log.d("lastID", "" + sharedPref.getLong("lastId", -1));
if (sharedPref.getLong("lastId", -1) == 5980)
{
editor.putBoolean("databaseExists", true);
editor.commit();
}
}
【问题讨论】:
标签: android json stream ioexception