Java — Android httpGET массив JSON

ЦЕЛЬ: Вызовите эту функцию и посмотрите на массив JSON, возвращенный из php, и посмотрите, нет ли элемента [0] или [1] == 1. PHP запрашивает таблицу логических значений, и я хочу узнать, какие из них 1 и 0, чтобы продолжить функциональность.

У меня есть эта функция, чтобы выполнить httpGET и вернуть объект JSON

  class CheckVotingStatus extends AsyncTask<String, String, String> {

/**
* Before starting background thread Show Progress Dialog
* */
boolean failure = false;

@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(Vote.this);
pDialog.setMessage("Checking vote Status...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}

@Override
protected String doInBackground(String... args) {
// TODO Auto-generated method stub
// Check for success tag
int success;

try {
// Building ParametersLog.d("request!", "starting");
// getting product details by making HTTP request
JSONObject json = jParser.getJSONFromUrl(LOGIN_URL);

// check your log for json response
// Log.d("Login attempt", json.toString());

// json success tag
success = json.getInt(TAG_SUCCESS);

if (success == 1) {
// Log.d("Login Successful!", json.toString());

JSONArray answerObj = json.getJSONArray(TAG_ANSWER);

// get first product object from JSON Array
JSONObject answer = answerObj.getJSONObject(0);
String bool1s = answer.getString(TAG_BOOL1);
JSONObject answer2 = answerObj.getJSONObject(1);
String bool2s = answer2.getString(TAG_BOOL2);

/******************************************/
if (bool1s.equals("1")&& bool2s.equals("0"))
{
startVoting = true;
}
else if (bool1s.equals("0")&& bool2s.equals("1"))
{
endVoting = true;
voted = false;

}
/*******************************************/
//return json.getString(TAG_MESSAGE);
}
else
{
//Log.d("Login Failure!", json.getString(TAG_MESSAGE));
//return json.getString(TAG_MESSAGE);
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
}

protected void onPostExecute(String file_url) {
// dismiss the dialog once product deleted
pDialog.dismiss();
if (file_url != null){
Toast.makeText(Vote.this, file_url, Toast.LENGTH_LONG).show();
}

}

Моя страница PHP запрашивает возврат двух бул из базы данных

$response = array();
$resttt = "SELECT startingBool, endingBool FROM vote_count";
$result = mysql_query("$resttt");
if (mysql_num_rows($result) > 0) {

$result = mysql_fetch_array($result);

$answer = array();
$answer["startingBool"] = $result["startingBool"];
$answer["endingBool"] = $result["endingBool"];
// success
$response["success"] = 1;

$response["answer"] = array();

array_push($response["answer"], $answer);

// echoing JSON response
echo json_encode($response);

}

Я получаю исключение конца ввода и ошибку для значения ответа

JSON PARSER

 public JSONObject getJSONFromUrl(final String url) {// Making HTTP request
try {
// Construct the client and the HTTP request.
//DefaultHttpClient httpClient = new DefaultHttpClient();
HttpClient httpClient = createHttpClient();
HttpGet httpGet = new HttpGet(url);
// Execute the POST request and store the response locally.
HttpResponse httpResponse = httpClient.execute(httpGet);
// Extract data from the response.
HttpEntity httpEntity = httpResponse.getEntity();
// Open an inputStream with the data content.
is = httpEntity.getContent();

} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

try {
// Create a BufferedReader to parse through the inputStream.
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
// Declare a string builder to help with the parsing.
StringBuilder sb = new StringBuilder();
// Declare a string to store the JSON object data in string form.
String line = null;

// Build the string until null.
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}

// Close the input stream.
is.close();
// Convert the string builder data to an actual string.
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}

// Try to parse the string to a JSON object
try {
Log.v("JSON", json);
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}

// Return the JSON Object.
return jObj;

}

0

Решение

Ваше эхо от php должно быть таким

{ «Успеха»: 1, «ответ»: [{ «bool1»: «0», «bool2»: «1»}]}

и ваш скрипт php

//conect to database, create table bool_table, insert data to bool_table.......$response = array();
$resttt = "SELECT bool1, bool2 FROM bool_table";
$result = mysql_query("$resttt");
if (mysql_num_rows($result) > 0) {

$result = mysql_fetch_array($result);

$answer = array();
$answer["bool1"] = $result["bool1"];
$answer["bool2"] = $result["bool2"];
// success
$response["success"] = 1;

$response["answer"] = array();

array_push($response["answer"], $answer);

// echoing JSON response
echo json_encode($response);

}

и разбор JSON

private static final String TAG_SUCCESS = "success";
private static final String TAG_ANSWER = "answer";
private static final String TAG_BOOL1 = "bool1";
private static final String TAG_BOOL2 = "bool2";
int success;

......
...JSONObject json = jsonParser.makeHttpRequest("xxxxxxxxxxxxxx", "GET", params);

// json success tag
success = json.getInt(TAG_SUCCESS);
if (success == 1) {
// successfully received product details
JSONArray answerObj = json.getJSONArray(TAG_ANSWER);

// get first product object from JSON Array
JSONObject answer = answerObj.getJSONObject(0);String bool1s = answer.getString(TAG_BOOL1));
String bool2s = answer.getString(TAG_BOOL2));
}else{
.......
....
1

Другие решения

когда у вас есть jsonarray, попробуйте получить значение

JSONArray json = jParser.getJSONFromUrl(LOGIN_URL);
JSONObject json_obj = json.getJSONObject(0);
String bool1s = json_obj.getString(TAG_BOOL1);
String bool2s = json_obj.getString(TAG_BOOL2);
0

По вопросам рекламы [email protected]