ブラウザでURLを手動で実行すると、このJSONが返されます。org.json.JSONException:文字0での入力の終了
public List<String> GetTestResultsFromUserID(Integer userID){
BufferedReader bufferedReader = null;
try {
URL url = new URL(AppConfig.Results_URL + "?userid=" + userID);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestProperty ("Authorization", "Basic Z2FycmV0dGg6ZnJBc3Rpbmc0");
bufferedReader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String result;
result = bufferedReader.readLine();
return ProcessResultSetFromDatabase(result);
}catch(Exception e){
Log.d("Exception in try", "Exception" + e.toString());
return null;
}
}
そしてresult
が、ここで処理されます:
private List<String> ProcessResultSetFromDatabase(String result){
List<String> resultSet = new ArrayList<String>();
try{
JSONObject jObj = new JSONObject(result);
boolean error = jObj.getBoolean("error");
if (!error){
for (int i=0; i<48; i++){
JSONObject rSet = jObj.getJSONObject(Integer.toString(i));
resultSet.add("Q: "+rSet.getString("question")+" Correct Ans: "+rSet.getString("correctanswer")+" Given Ans: "+rSet.getString("useranswer")+" Correct:"+(rSet.getString("correct")));
}
}else{
resultSet.add("No results at the moment");
}
}catch(JSONException e){
e.printStackTrace();
}
return resultSet;
}
注:渡されたときProcessResultSetFromDatabase
に渡された結果はnullであると思われるが、次のように
{
"error": false,
"0": {
"question": "Using the information that 6.7 × 52 = 348.4, Find the value of: 6.7 × 520",
"useranswer": "3484",
"correctanswer": "3484",
"correct": "1"
},
"1": {
"question": "Jane drives 50mph. London is 350 miles away. How long will it take?",
"useranswer": "5",
"correctanswer": "7",
"correct": "0"
},
"2": {
"question": "74*3?",
"useranswer": "222",
"correctanswer": "222",
"correct": "1"
},
"3": {
"question": "39+31?",
"useranswer": "70",
"correctanswer": "70",
"correct": "1"
}
}
コードがあります。
「nullと思われる」実際に 'null'かどうかを確認できませんか? –
@Intator_ – Piyush
@RohitAryaを使用して解析する方が良いです。結果はbufferedReader(新しいInputStreamReader(con.getInputStream()))で、何も返されません。単に – bananabreadbob