Connexion Android avec base de donne

Résolu
Bonjour
je suis débutante en android et je trouve un problème au niveau "run" toujours affiche un message "sorry"
vous pouvez m'aider
et merci
package com.example.espaceenseignant;

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.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
 private static final String strURL = "http://10.0.2.2/webservice/connecter.php";
 // private String result ;
  
  private JSONArray  jArray;
  private JSONObject  json_data;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
   Button connexion = (Button) findViewById(R.id.button1);
         final EditText iden = (EditText) findViewById(R.id.editText1);
         final EditText Nom = (EditText) findViewById(R.id.editText2);
         connexion.setOnClickListener(new View.OnClickListener() {
          
             public void onClick(View v) {
              String result =null;
              InputStream is = null;
              StringBuilder sb = new StringBuilder();
              ArrayList<NameValuePair> nameValuePairs=new ArrayList<NameValuePair> ();
              nameValuePairs.add(new BasicNameValuePair("identifiant",Nom.getText().toString()));

              try{
              
      
               HttpClient httpclient = new DefaultHttpClient();
               HttpPost httppost = new HttpPost(strURL);
               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());
        } 
        try{
         BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
       
         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 in http connection " + e.toString());
           }
        String essai=result.substring(0, 4) ;
        try {
         if (result.matches("<br >")){
           essai=result.substring(0, 2) ; 
         }
         JSONArray jArray = new JSONArray(result);
         int b=jArray.length();
         
          
                 
            JSONObject json_data = jArray.getJSONObject(0);
        
         
            String nom1 = json_data.getString("cin").toString();
            //String login = json_data.getString("login").toString();
            if (nom1.equals(iden.getText().toString()) ){
             
             Intent principale =new Intent(MainActivity.this,classe.class);
             startActivity(principale);
         
            }
            else {
             
             Toast.makeText(MainActivity.this, "nom introuvable ", Toast.LENGTH_LONG).show();
            }
         
         
          }catch(JSONException e){
         //  Log.e("log_tag", "Error parsing data " + e.toString());
           Toast.makeText(MainActivity.this, "Verifier L'identifiant ", Toast.LENGTH_LONG).show();
          }
        
       

             }
             });
  
 }
}

8 réponses

  1. Au niveau de programme il n’y a pas d'erreur
    mai seulement en run , il affiche après cliquer sur le boutant connecter
    " the application espaceenseignant(processcom.example.espaceenseignant) has stopped unexpectedly.please try again.
    1. Oui et bien dans ce cas tu doit avoir une trace dans le logcat. Le logcat, je ne te parle pas de ton programme.
  2. Ce tout qui s'affiche à logCat

    02-28 07:20:20.360: W/KeyCharacterMap(274): No keyboard for id 0
    02-28 07:20:20.360: W/KeyCharacterMap(274): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
    02-28 07:20:34.800: E/log_tag(274): Error in http connection java.net.SocketException: Permission denied
    02-28 07:20:34.800: E/log_tag(274): Error in http connection java.lang.NullPointerException
    02-28 07:20:34.800: D/AndroidRuntime(274): Shutting down VM
    02-28 07:20:34.800: W/dalvikvm(274): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
    02-28 07:20:34.840: E/AndroidRuntime(274): FATAL EXCEPTION: main
    02-28 07:20:34.840: E/AndroidRuntime(274): java.lang.NullPointerException
    02-28 07:20:34.840: E/AndroidRuntime(274): at com.example.espaceenseignant.MainActivity$1.onClick(MainActivity.java:78)
    02-28 07:20:34.840: E/AndroidRuntime(274): at android.view.View.performClick(View.java:2408)
    02-28 07:20:34.840: E/AndroidRuntime(274): at android.view.View$PerformClick.run(View.java:8816)
    02-28 07:20:34.840: E/AndroidRuntime(274): at android.os.Handler.handleCallback(Handler.java:587)
    02-28 07:20:34.840: E/AndroidRuntime(274): at android.os.Handler.dispatchMessage(Handler.java:92)
    02-28 07:20:34.840: E/AndroidRuntime(274): at android.os.Looper.loop(Looper.java:123)
    02-28 07:20:34.840: E/AndroidRuntime(274): at android.app.ActivityThread.main(ActivityThread.java:4627)
    02-28 07:20:34.840: E/AndroidRuntime(274): at java.lang.reflect.Method.invokeNative(Native Method)
    02-28 07:20:34.840: E/AndroidRuntime(274): at java.lang.reflect.Method.invoke(Method.java:521)
    02-28 07:20:34.840: E/AndroidRuntime(274): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    02-28 07:20:34.840: E/AndroidRuntime(274): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    02-28 07:20:34.840: E/AndroidRuntime(274): at dalvik.system.NativeStart.main(Native Method)
    1. Tu as bien déclaré la permission internet dans ton manifest ?
  3. vous parlez à androidManifest ?
    oui j'ajoute <activity android:name="classe"></activity>
    1. Je ne te parle pas de l'activité, je te parle de la permission qui permet d'autoriser ton appli à accéder à internet.
      Parce que d'après cette ligne ça pourrait être la raison de l'erreur.
      02-28 07:20:34.800: E/log_tag(274): Error in http connection java.net.SocketException: Permission denied
  4. je ne connais pas , mais je déjà fait des autre applications connecter a base des donnes et se marche bien
    1. Ba si ça marche bien t'as pas besoin d'aide alors :)
  5. jusqu'à ce moment la , je ne connais pas l'erreur
    mais dans tous le cas merci pour vous
    1. Modérateur
      Hello,

      Comme le dit Nhhi, le problème est là:
      02-28 07:20:34.800: E/log_tag(274): Error in http connection java.net.SocketException: Permission denied 

      Comme l'a également dit Nhhi, il faut donner la permission à ton applicaition d'accéder à Internet. Pour ceci, tu as une ligne à rajouter dans ton Manifest:
      <uses-permission android:name="android.permission.INTERNET"/>