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. 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"/>
    1. jusqu'à ce moment la , je ne connais pas l'erreur
      mais dans tous le cas merci pour vous
      1. 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 :)
      2. 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
      3. 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 ?
      4. 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.