org.json.JSONException: Value <br of type java.lang.String cannot be converted to JSONObject

46,090

Solution 1

Thanks I manage to correct some of the errors 2 ';' were missing and I could see the error with Log.i("tagconvertstr", "["+result+"]");

The msg that it is showing is something like that :

[<br/ > font size = 1 table class=''xdebug-erroe' dir='ltr' ... loads of html code that wasn't in my initial code then....{"message":"Problem sending you the activation mail !"}]

So there's a problem with the json format on that message "Problem sending you the activation mail" but the user was registered OK!

So the second time i would try that code it would show me in a correct json format : "This email has already been used" ! (without any errors) but i still can't find the error in my php code : S

Solution 2

Your request to http://192.168.1.101/spotnshare/subscribe.php is failing and returning a non-JSON string (probably a PHP error). You can print out the value with a

Log.i("tagconvertstr", "["+result+"]");

before the new JSONObject call to see what you're getting before parsing it.

EDIT: if you are using Eclipse you can set a break point and step through to see what's going on.

Share:
46,090
Karly
Author by

Karly

Updated on July 12, 2022

Comments

  • Karly
    Karly almost 2 years

    I m trying to do a registration page from an android activity connectiong the datas to my sqldatabase, I m getting this error " org.json.JSONException: Value

    First of all, could anyone advise me on how to debug my program when using an mysql database with php script for an android application ? Cause I usually use the log cat but here the errors aren't as clear :S ...

    Here is the activity code :

    public class Subscribe extends Activity {
    
        Button bSubscribe;
        EditText etPwdSub, etPwdConf, etLoginSub, etNameSub, etFnSub;
        String result = null;
        InputStream is = null;
        String donnees = "";
    
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.subscribe);
    
            etLoginSub = (EditText) findViewById(R.id.etLoginSub);
            etPwdSub = (EditText) findViewById(R.id.etPwdSub);
            etPwdConf = (EditText) findViewById(R.id.etPwdConf);
            etNameSub = (EditText) findViewById(R.id.etNameSub);
            etFnSub = (EditText) findViewById(R.id.etFnSub);
    
            bSubscribe = (Button) findViewById(R.id.bSubscribe);        
            bSubscribe.setOnClickListener(new View.OnClickListener() {
    
                public void onClick(View v) {
    
                    Pattern p = Pattern.compile(".+@.+\\.[a-z]+");
                    Matcher m = p.matcher(etLoginSub.getEditableText());
    
                    if (m.matches() == false) {
    
                        Toast.makeText(
                                getBaseContext(),
                                "Le champs email ne correspond pas au format d'une adresse mail",
                                Toast.LENGTH_SHORT).show();
                    } else {
    
                        // autre méthode : etPwdSub.equals("")
                        if (etPwdSub.getEditableText() != null
                                && etPwdConf.getEditableText() != null
                                && etNameSub.getEditableText() != null
                                && etFnSub.getEditableText() != null) {
    
                            if (etPwdSub.getEditableText().toString().equals(etPwdConf.getEditableText().toString())) {
    
                                ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    
                                nameValuePairs.add(new BasicNameValuePair("login", etLoginSub.getText().toString()));
                                nameValuePairs.add(new BasicNameValuePair("pwd", etPwdConf.getText().toString()));
                                nameValuePairs.add(new BasicNameValuePair("name", etNameSub.getText().toString()));
                                nameValuePairs.add(new BasicNameValuePair("firstname", etFnSub.getText().toString()));                          
    
                                try {
                                    // commandes httpClient
                                    HttpClient httpclient = new DefaultHttpClient();
    
    
                                    HttpPost httppost = new HttpPost(
                                            "http://192.168.1.101/spotnshare/subscribe.php");
    
                                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    
                                    HttpResponse response = httpclient.execute(httppost);
    
                                    HttpEntity entity = response.getEntity();
                                    is = entity.getContent();
    
                                } catch (Exception e) {
                                    Log.i("taghttppost", "" + e.toString());
                                    Toast.makeText(getBaseContext(), e.toString(), Toast.LENGTH_LONG)
                                            .show();
                                }
    
                                try {
                                    BufferedReader reader = new BufferedReader(new InputStreamReader(
                                            is, "UTF-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.i("tagconvertstr", "" + e.toString());
                                }
    
                                try {
                                    JSONObject jObj = new JSONObject(result);
    
                                        donnees = jObj.getString("message");
    
                                        Intent ourIntent = new Intent(Subscribe.this,
                                                SubscribeMess.class);
    
                                        // objet qui vas nous permettre de passe des variables ici la
                                        // variable passInfo
                                        Bundle objetbunble = new Bundle();          
                                        objetbunble.putString("message", donnees);
                                        ourIntent.putExtras(objetbunble);               // on passe notre objet dans l'intent
    
                                        // on appelle notre activité
                                        startActivity(ourIntent);                                   
    
                                } catch (JSONException e) {
                                    Log.i("tagjsonexp", "" + e.toString());
                                } catch (ParseException e) {
                                    Log.i("tagjsonpars", "" + e.toString());
                                }
    
    
                            } else {
                                Dialog d = new Dialog(Subscribe.this);
                                d.setTitle(etPwdSub.getEditableText() +" "+etPwdConf.getEditableText());
                                d.show();
                            }
    
                        } else {
                            Dialog d = new Dialog(Subscribe.this);
                            d.setTitle("Fill in all the fields !");
                            d.show();
                        }
    
                    }
                }
            });
    
        }
    
        protected void onPause() {
            super.onPause();
            finish();
        }
    }
    

    and here is the php script :

    <?php
    
    if( isset($_POST['login']) && isset($_POST['pwd']) && isset($_POST['name']) && isset($_POST['firstname'])) {
    
        include("connexion_bdd.php");
    
        if(connexionBDD() == 1){
    
            $login = $_POST['login'];
            $pwd = $_POST['pwd'];
            $name = $_POST['name'];
            $firstname = $_POST['firstname'];
    
            $sql = "SELECT colUserID
                    FROM userTable 
                    WHERE colUserLogin = '".$login."' ";
    
            $req = mysql_query($sql);
            $resultat=mysql_num_rows($req); 
    
            if($resultat==0){
                $temps = time();
                $clef = md5($login . $temps);
    
                $req = mysql_query("INSERT INTO userTable(colUserLogin, colUserPwd, colUserName, colUserFirstname, colUserKey, colUserDate)
                                            VALUES( '$login', '$pwd', '$name', '$firstname', '$clef', '$temps')");
    
                if($req){
                        $destinataire = $login;
                        $sujet ="Welcome on SnSR";
                        $from = "From: [email protected] \r\n";
                        $from .= "Content-Type: text/html; charset=us-ascii\r\n";
    
                        $message = ' Clic on the link below :<br/>
                        <a href="http://localhost/spotnshare/validation_mail.php?usrk='.$clef.' ">
                            Registration confirmation.
                        </a> ';
    
                        ini_set('SMTP','relay.skynet.be');
    
                        if(mail($destinataire,$sujet,$message,$from)){
                            $msg = 'Check your mailbox to activate your account !'; 
                        }           
                        else{
                            $msg = 'Problem sending you the activation mail !'; 
                            $req = mysql_query("DELETE FROM userTable WHERE colUserLogin = '".$pseudo."' ");
                        }
                }
                else{
                    $msg = 'Problem inserting you in our database !';
                }
            }else{
                    $msg = 'This email has already been used !';
            }
            mysql_free_result ($req);   
    
        }else{
            $msg = "Connexion problem with de DB"
            print(json_encode(array("message" => $msg)));       
        }
    
    }else{
            $msg = "Couldn't treat your datas"
    }
    
    print(json_encode(array("message" => $msg)));
    
    ?>
    
  • Karly
    Karly about 12 years
    Thanks I manage to correct some of the errors 2 ';' were missing and I could see the error with Log.i("tagconvertstr", "["+result+"]"); The that is showing is something like that :
  • Admin
    Admin over 9 years
    i struck in same situation can anyone help me?