Reputation: 139
I received the error: JSON Parser﹕ Error parsing data org.json.JSONException: Value Success of type java.lang.String cannot be converted to JSONObject at success = json.getBoolean(SUCCESS);
I searched around SO and the Internet and I am still not understanding what I am doing wrong.
My JSON looks like: Success
@Override
protected Boolean doInBackground(Void... params) {
//Log.v("LoginActivity", "UserLoginTask-AsyncTask-doinBackground");
Boolean success;
String username = mUsernameView.getText().toString();
String password = mPasswordView.getText().toString();
try {
//Building Parameters
ArrayList<NameValuePair> postParameters = new ArrayList<NameValuePair>();
postParameters.add(new BasicNameValuePair("username", mUsernameView.getText().toString()));
postParameters.add(new BasicNameValuePair("password", mPasswordView.getText().toString()));
Log.d("request!", "starting");
//getting product details by making HTTP request
//JSONObject json = jsonParser.makeHttpRequest(LOGIN_SUCCESS_URL, "POST", postParameters);
//Error parsing data org.json.JSONException:
//Value Success of type java.lang.String cannot be converted to JSONObject
String response = jsonParser.makeHttpRequest(LOGIN_SUCCESS_URL, "POST", postParameters);
Log.v("SUCCESS", SUCCESS.toString());
// Log.v("json", json.toString()); //null
//success = json.getBoolean(SUCCESS);
//if (success == true) {
if (response.toLowerCase().contains("success")) {
// Log.d("Login Successful!", json.toString());
Toast.makeText(LogIn.this, "Login Successful!", Toast.LENGTH_LONG).show();
Intent i = new Intent(getApplicationContext(), Main.class);
finish();
startActivity(i);
//return json.getBoolean(FAILURE);
} else {
//Log.d("Login Failure!", json.getString(FAILURE));
Toast.makeText(LogIn.this, "Login Fail!", Toast.LENGTH_LONG).show();
Intent i = new Intent(getApplicationContext(), MainActivity.class);
finish();
startActivity(i);
}
} catch (JSONException e) { //error here
e.printStackTrace();
}
return null;
}
}
public String makeHttpRequest(String url, String method, List<NameValuePair> params) {
// Making HTTP request
try {
// check for request method
if(method == "POST"){
// request method is POST
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
Log.v("makeHttpRequest client", httpClient.toString());
HttpPost httpPost = new HttpPost(url);
Log.v("makeHttpRequest post", httpPost.toString());
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
Log.v("makeHttpRequest is", is.toString());
}else if(method == "GET"){
// request method is GET
DefaultHttpClient httpClient = new DefaultHttpClient();
String paramString = URLEncodedUtils.format(params, "utf-8");
url += "?" + paramString;
HttpGet httpGet = new HttpGet(url);
HttpResponse httpResponse = httpClient.execute(httpGet);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
//BufferedReader reader = new BufferedReader(new InputStreamReader(
// is, "iso-8859-1"), 8);
BufferedReader reader = new BufferedReader(new InputStreamReader(is, HTTP.UTF_8), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
json = sb.toString();
Log.v("json=sb", sb.toString());
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
return json;
}
Upvotes: 2
Views: 5113
Reputation: 132972
As in log:
Parser﹕ Error parsing data org.json.JSONException: Value Success of type java.lang.String cannot be converted to JSONObject
Means not getting JSONObject
from server but just getting Success
String as response from server.
So, no need to convert json
to JSONObject
. do following change to get it work :
1. Change return type of makeHttpRequest
method to String
and return json
(remove or comment jObj = new JSONObject(json);
line )
2. In doInBackground
call makeHttpRequest
method as:
String response = jsonParser.makeHttpRequest(LOGIN_SUCCESS_URL,
"POST",
postParameters);
if(response.toLowerCase().contains("success")){
/// do task
}else{
// do task
}
Upvotes: 1