2016-11-19 5 views
0

Ich arbeite an registrieren und Login-Aktivität. Wenn ich den Namen, den Benutzernamen und das Passwort eintippe, die Informationen zugegriffen Android-Anwendung. und der Toast zeigen die Meldung 'Registrierungserfolg' an. Aber die Daten nicht in MySQL DB eingefügt. Wie kann ich es lösen? Bitte hilf mir.zum Einfügen von Android-Daten in mysql

Es folgt LoginActivity.java

public class LoginActivity extends Activity { 
    EditText ET_NAME,ET_PASS; 
    String login_name,login_pass; 

    @Override 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login_main); 
     ET_NAME = (EditText)findViewById(R.id.user_name); 
     ET_PASS = (EditText)findViewById(R.id.user_pass); 
    } 
    public void userReg(View view) 
    { 
     startActivity(new Intent(this,RegisterActivity.class)); 
    } 
    public void userLogin(View view) 
    { 
     login_name = ET_NAME.getText().toString(); 
     login_pass = ET_PASS.getText().toString(); 
     String method = "login"; 
     BackgroundTask backgroundTask = new BackgroundTask(this); 
     backgroundTask.execute(method,login_name,login_pass); 

     Intent intent = new Intent(this, MainActivity.class); 
     intent.putExtra("ID", login_name); 
     intent.putExtra("PW", login_pass); 
     startActivity(intent); 

     finish(); 
    } 
} 

Dies ist BackgroundTask.java

public class BackgroundTask extends AsyncTask<String,Void,String> { 
    AlertDialog alertDialog; 
    Context ctx; 

    BackgroundTask(Context ctx) { 
     this.ctx = ctx; 
    } 

    @Override 
    protected void onPreExecute() { 
     alertDialog = new AlertDialog.Builder(ctx).create(); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     String reg_url = "http://35.160.135.119/webapp/register.php"; 
     String login_url = "http://35.160.135.119/webapp/login.php"; 
     String method = params[0]; 
     if (method.equals("register")) { 
      String name = params[1]; 
      String user_name = params[2]; 
      String user_pass = params[3]; 
      try { 
       URL url = new URL(reg_url)     
       HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 

       httpURLConnection.setRequestMethod("POST"); 
       httpURLConnection.setDoOutput(true); 
       //httpURLConnection.setDoInput(true); 
       OutputStream OS = httpURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(OS, "UTF-8")); 
       String data = URLEncoder.encode("name", "UTF-8") + "=" + URLEncoder.encode(name, "UTF-8") + "&" + 
         URLEncoder.encode("user_name", "UTF-8") + "=" + URLEncoder.encode(user_name, "UTF-8") + "&" + 
         URLEncoder.encode("user_pass", "UTF-8") + "=" + URLEncoder.encode(user_pass, "UTF-8"); 


       bufferedWriter.write(data); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       OS.close(); 
       InputStream IS = httpURLConnection.getInputStream(); 
       IS.close(); 
       //httpURLConnection.connect(); 
       httpURLConnection.disconnect(); 
       return "Registration Success..."; 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } else if (method.equals("login")) { 
      String login_name = params[1]; 
      String login_pass = params[2]; 
      try { 
       URL url = new URL(login_url); 
       HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
       httpURLConnection.setRequestMethod("POST"); 
       httpURLConnection.setDoOutput(true); 
       httpURLConnection.setDoInput(true); 
       OutputStream outputStream = httpURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
       String data = URLEncoder.encode("login_name", "UTF-8") + "=" + URLEncoder.encode(login_name, "UTF-8") + "&" + 
         URLEncoder.encode("login_pass", "UTF-8") + "=" + URLEncoder.encode(login_pass, "UTF-8"); 
       bufferedWriter.write(data); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       outputStream.close(); 
       InputStream inputStream = httpURLConnection.getInputStream(); 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1")); 
       String response = ""; 
       String line = ""; 
       while ((line = bufferedReader.readLine()) != null) { 
        response += line; 
       } 
       bufferedReader.close(); 
       inputStream.close(); 
       httpURLConnection.disconnect(); 
       return response; 

      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 

    @Override 
    protected void onProgressUpdate(Void... values) { 
     super.onProgressUpdate(values); 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     if (result.equals("Registration Success...")) { 
      Toast.makeText(ctx, result, Toast.LENGTH_LONG).show(); 
     } else { 
      alertDialog.setMessage(result); 
      alertDialog.show(); 
     } 
    } 
} 

Und das ist Register.java

public class RegisterActivity extends Activity { 
    EditText ET_NAME, ET_USER_NAME, ET_USER_PASS; 
    String name, user_name, user_pass; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.register_layout); 
     ET_NAME = (EditText)findViewById(R.id.name); 
     ET_USER_NAME = (EditText)findViewById(R.id.new_user_name); 
     ET_USER_PASS = (EditText)findViewById(R.id.new_user_pass); 
    } 
    public void userReg(View view) 
    { 
     name = ET_NAME.getText().toString(); 
     user_name = ET_USER_NAME.getText().toString(); 
     user_pass = ET_USER_PASS.getText().toString(); 
     String method = "register"; 
     BackgroundTask backgroundTask = new BackgroundTask(this); 
     backgroundTask.execute(method,name, user_name, user_pass); 
     finish(); 

    } 

} 

Dieses Protokoll wird debuggen.

$ adb shell am start -n "com.example.jina.a1105gmdemo/com.example.jina.a1105gmdemo.LoginActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D 
Connecting to com.example.jina.a1105gmdemo 
Connected to the target VM, address: 'localhost:8605', transport: 'socket' 
I/System.out: Sending WAIT chunk 
W/ActivityThread: Application com.example.jina.a1105gmdemo is waiting for the debugger on port 8100... 
I/dalvikvm: Debugger is active 
I/System.out: Debugger has connected 
I/System.out: waiting for debugger to settle... 
I/System.out: waiting for debugger to settle... 
I/System.out: waiting for debugger to settle... 
I/System.out: waiting for debugger to settle... 
I/System.out: waiting for debugger to settle... 
I/System.out: waiting for debugger to settle... 
I/System.out: debugger has settled (1484) 
I/MultiDex: VM with version 1.6.0 does not have multidex support 
I/MultiDex: install 
I/MultiDex: MultiDexExtractor.load(/data/app/com.example.jina.a1105gmdemo-46.apk, false) 
I/MultiDex: Detected that extraction must be performed. 
I/MultiDex: Trying to delete old file /data/data/com.example.jina.a1105gmdemo/code_cache/secondary-dexes/com.example.jina.a1105gmdemo-45.apk.classes2.dex of size 2898496 
I/MultiDex: Deleted old file /data/data/com.example.jina.a1105gmdemo/code_cache/secondary-dexes/com.example.jina.a1105gmdemo-45.apk.classes2.dex 
I/MultiDex: Trying to delete old file /data/data/com.example.jina.a1105gmdemo/code_cache/secondary-dexes/com.example.jina.a1105gmdemo-45.apk.classes2.zip of size 934986 
I/MultiDex: Deleted old file /data/data/com.example.jina.a1105gmdemo/code_cache/secondary-dexes/com.example.jina.a1105gmdemo-45.apk.classes2.zip 
I/MultiDex: Extraction is needed for file /data/data/com.example.jina.a1105gmdemo/code_cache/secondary-dexes/com.example.jina.a1105gmdemo-46.apk.classes2.zip 
I/MultiDex: Extracting /data/data/com.example.jina.a1105gmdemo/code_cache/secondary-dexes/com.example.jina.a1105gmdemo-46.apk.classes2089171779.zip 
I/MultiDex: Renaming to /data/data/com.example.jina.a1105gmdemo/code_cache/secondary-dexes/com.example.jina.a1105gmdemo-46.apk.classes2.zip 
I/MultiDex: Extraction success - length /data/data/com.example.jina.a1105gmdemo/code_cache/secondary-dexes/com.example.jina.a1105gmdemo-46.apk.classes2.zip: 934986 
I/MultiDex: load found 1 secondary dex files 
D/dalvikvm: DexOpt: --- BEGIN 'com.example.jina.a1105gmdemo-46.apk.classes2.zip' (bootstrap=0) --- 
D/dalvikvm: DexOpt: --- END 'com.example.jina.a1105gmdemo-46.apk.classes2.zip' (success) --- 
D/dalvikvm: DEX prep '/data/data/com.example.jina.a1105gmdemo/code_cache/secondary-dexes/com.example.jina.a1105gmdemo-46.apk.classes2.zip': unzip in 66ms, rewrite 778ms 
I/MultiDex: install done 
I/FirebaseInitProvider: FirebaseApp initialization unsuccessful 
I/Adreno-EGL: <qeglDrvAPI_eglInitialize:410>: EGL 1.4 QUALCOMM build: () 
       OpenGL ES Shader Compiler Version: E031.24.00.08 
       Build Date: 03/21/14 Fri 
       Local Branch: AU200+patches_03212014 
       Remote Branch: 
       Local Patches: 
       Reconstruct Branch: 
D/OpenGLRenderer: Enabling debug mode 0 
D/OpenGLRenderer: GL error from OpenGLRenderer: 0x502 
E/OpenGLRenderer: GL_INVALID_OPERATION 
D/OpenGLRenderer: GL error from OpenGLRenderer: 0x502 
E/OpenGLRenderer: GL_INVALID_OPERATION 
D/dalvikvm: threadid=1: still suspended after undo (sc=1 dc=1) 
D/dalvikvm: threadid=12: still suspended after undo (sc=1 dc=1) 
D/dalvikvm: threadid=12: still suspended after undo (sc=1 dc=1) 
D/dalvikvm: threadid=12: still suspended after undo (sc=1 dc=1) 
D/dalvikvm: threadid=12: still suspended after undo (sc=1 dc=1) 
D/dalvikvm: threadid=12: still suspended after undo (sc=1 dc=1) 
D/dalvikvm: threadid=12: still suspended after undo (sc=1 dc=1) 
D/dalvikvm: threadid=12: still suspended after undo (sc=1 dc=1) 
D/dalvikvm: threadid=12: still suspended after undo (sc=1 dc=1) 
I/System.out: Thread-1263(HTTPLog):isShipBuild true 
I/System.out: Thread-1263(HTTPLog):SmartBonding Enabling is false, SHIP_BUILD is true, log to file is false, DBG is false 
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection 
W/IInputConnectionWrapper: getSelectedText on inactive InputConnection 
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection 
W/IInputConnectionWrapper: getTextAfterCursor on inactive InputConnection 
W/IInputConnectionWrapper: getSelectedText on inactive InputConnection 
W/IInputConnectionWrapper: getTextBeforeCursor on inactive InputConnection 
W/IInputConnectionWrapper: getTextAfterCursor on inactive InputConnection 
D/dalvikvm: threadid=12: still suspended after undo (sc=1 dc=1) 
D/dalvikvm: threadid=1: still suspended after undo (sc=1 dc=1) 
Disconnected from the target VM, address: 'localhost:8605', transport: 'socket' 

Antwort

1

setzen, dass Code in der Post von Asynchron-Aufgabe ausführen, die Sie nach der Asynchron Aufgabe complete.like ausführen wollen ..

finish(); 

und Ihre Web Service für Daten überprüfen, die Sie dort empfangen und versuchen, Drucken Sie das Ergebnis in logcat aus, was Sie von Ihrem Server-Skript erhalten haben, anstelle von statischer "Erfolgsmeldung".

+0

danke. Ich habe mein Fehlerprotokoll überprüft und den PHP-Code behoben. Es funktioniert jetzt. aber ich kann deinen ersten Rat nicht verstehen. setze fertig(); code in post execute triggers error .. –

+0

das ist eine gute praxis .. cuz auf post execute wird aufgerufen, wenn ihre async-aufgabe fertig ist die ausführung ... –