4

I am writing an app intend to run on android devices.The app is supossed to read the information in a Mysql database through php, but when I run the application, Log cat prompts an error 'Error parsing data org.json.JSONException: Value

The code I've got was downloaded from a tutorial, please be patient I've got some basic knowledge in php and very few in java. I already tested the php script and it is working flawlessly, so I won't bother to attach it.

main.java code:

 

package test.an2mysql; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.HttpClient; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.LinearLayout; import android.widget.TextView; public class main extends Activity { /** Called when the activity is first created. */ TextView txt; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Create a crude view - this should really be set via the layout resources // but since its an example saves declaring them in the XML. LinearLayout rootLayout = new LinearLayout(getApplicationContext()); txt = new TextView(getApplicationContext()); rootLayout.addView(txt); setContentView(rootLayout); // Set the text and call the connect function. txt.setText("Connecting..."); //call the method to run the data retreival txt.setText(getServerData(KEY_121)); } public static final String KEY_121 = "http://10.1.1.19/cms/test/android2mysql/read.php"; //i use my real ip here private String getServerData(String returnString) { InputStream is = null; String result = ""; //the data to send ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); nameValuePairs.add(new BasicNameValuePair("country","undefined")); //http post try{ HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(KEY_121); httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); }catch(Exception e){ Log.e("log_tag", "Error in http connection "+e.toString()); } //convert response to string try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); result=sb.toString(); }catch(Exception e){ Log.e("log_tag", "Error converting result "+e.toString()); } //parse json data try{ JSONArray jArray = new JSONArray(result); for(int i=0;i<jArray.length();i++){ JSONObject json_data = jArray.getJSONObject(i); Log.i("log_tag","id: "+json_data.getInt("id")+ ", country: "+json_data.getString("country")+ ", documentn: "+json_data.getInt("documentn") ); //Get an output to the screen returnString += "\n\t" + jArray.getJSONObject(i); } }catch(JSONException e){ Log.e("log_tag", "Error parsing data "+e.toString()); } return returnString; } }

I would kindly appreciate any help you could give me.

3
  • 2
    Going on the title of you question.. it looks like your trying to parse xml when your code is expecting JSON Commented Apr 22, 2012 at 22:05
  • 1
    @user1350102: "I already tested the php script and it is working flawlessly..." - I beg to differ. The php script may be returning 'something' but it's not working "flawlessly". From your question title, as nz_karl suggests, <?xml is the start of an XML declaration which means your php script is returning XML data and not pure JSON. Commented Apr 22, 2012 at 22:29
  • am also getting the same problem.. when i try to parse the json url am getting same error.. Commented Apr 23, 2012 at 4:13

1 Answer 1

3

As pointed out in the comments to your question, it appears that your server is returning XML rather than JSON. You can easily confirm this by just outputting result:

}catch(JSONException e){
    Log.e("log_tag", "Error parsing data "+e.toString());
    Log.e("log_tag", "Failed data was:\n" + result);
}

If it's XML, which it almost certainly must be, then you either need to get the server to output JSON or you need to parse the XML that it's sending you.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.