#android #json
#Android #json
Вопрос:
Я хотел бы проверить условие, которое, если true, должно перейти к следующему оператору. Проблема, с которой я сталкиваюсь, заключается в том, что я поместил код в блок try, catch. Каждый раз, когда я проверяю его значение, мне нужно его инициализировать, но после инициализации, если обнаружена неверность, при обычном выполнении блок try завершает работу и передает дескриптор блоку catch
public class HandleJSON{
UserHelper userAdapter;
private static final String TAG = "amp;amp;----HTTPClient-----**";
public static String SendHttpPost (String URL, JSONObject jsonobj) {
String regName = "";
try{
Log.v("Json object request is ", jsonobj.toString());
DefaultHttpClient httpClientInstance = GetHttpClient.getHttpClientInstance();
HttpPost httpPostRequest = new HttpPost(URL);
Log.v(TAG,"The url is " URL);
StringEntity se;
se = new StringEntity(jsonobj.toString());
httpPostRequest.setEntity(se);
httpPostRequest.setHeader("Accept", "application/json");
httpPostRequest.setHeader("Content-type", "application/json");
long t = System.currentTimeMillis();
HttpResponse response = (HttpResponse) httpClientInstance.execute(httpPostRequest);
Log.i(TAG, "HTTPRESPONSE RECIEVED" (System.currentTimeMillis()-t) "ms");
String resultString = convertStreamToString(response.getEntity().getContent());
Log.v(TAG , "The response is " resultString);
JSONObject jsonObj = new JSONObject(resultString);
JSONObject sessionJson = jsonObj.getJSONObject("session");
Log.i(TAG,"is it coming here");
Log.i(TAG,"" sessionJson.getJSONObject(resultString).toString());
String sessionId = sessionJson.getString("sessionid");
String name = sessionJson.getString("name");
JSONObject messageJson = jsonObj.getJSONObject("message");
Log.i(TAG, "message is true log statement");
String type_JSON = messageJson.getString("sessionid");
String content_JSON = messageJson.getString("name");
Log.i(TAG,"" messageJson.getJSONObject(resultString).toString() type_JSON content_JSON);
Log.v(TAG,"The session ID is " sessionId);
Log.v(TAG,"The name is " name);
regName = name "-" sessionId "-" URL;
} catch (Exception e){
Log.i(TAG, "message is true log statement");
e.printStackTrace();
}
Log.v(TAG,"before the return statement " regName.toString().split("-"));
return regName;
}
Я приведу здесь небольшое объяснение, я получу объект JSON, который я проанализирую. Есть два типа ответа JSON, которые я получу
сообщение: если имя пользователя и пароль неверны
сеанс: если имя пользователя и пароль верны
Я хочу проверить, является ли session true, затем передать элемент управления для инициализации оператора сеанса и разделить его на части.
Надеюсь, я был ясен. Заранее спасибо
Комментарии:
1. Выберите JSONObject вместо getJSONObject и проверьте, возвращает ли он значение null developer.android.com/reference/org/json /…
Ответ №1:
вы можете использовать
jsonObj.has("session")
чтобы увидеть, является ли результирующее сообщение действительным. Приведенное выше утверждение вернет true, если в результирующем json есть ключ «session». вы можете сделать то же самое, если хотите проверить наличие сообщения.
HTH.
Ответ №2:
Ну, я понял это, поместив свой код сеанса в оператор Catch. Если условие истинно, оно продолжит выполнение. Если условие равно false, оно перейдет в блок catch и выполнит там инструкции вместо простого использования printstacktrace()