2016-06-13 9 views
0

AsyncTask main-Methode Geting:Nicht richtigen Server reagieren in android app

public class ConnectToServerAsyncTask extends AsyncTask<String, Void, String> { 
    private Context context; 
    public ConnectToServerAsyncTask(Context context) { 
     this.context = context; 
    } 

    @Override 
    protected void onPreExecute() { 
     alertDialog = new AlertDialog.Builder(context).create(); 
     alertDialog.setTitle("Synchronizing..........."); 
    } 

    @Override 
    protected String doInBackground(String... params) { 
     String order = params[0]; 
     if (order.equalsIgnoreCase("Register")) { 
      String name = params[1]; 
      String username = params[2]; 
      String password = params[3]; 
      String link = SERVER_ADDRESS + "signUp.php"; 
      try { 
       String dataToSend = URLEncoder.encode("name","UTF-8")+"=" + URLEncoder.encode(name, "UTF-8") +"&"+ 
           URLEncoder.encode("username","UTF-8")+"="+ URLEncoder.encode(username, "UTF-8")+"&"+ 
           URLEncoder.encode("password", "UTF-8")+"="+URLEncoder.encode(password, "UTF-8"); 

       URL url = new URL(link); 
       HttpURLConnection con = (HttpURLConnection) url.openConnection(); 
       con.setRequestMethod("POST"); 
       con.setDoOutput(true); 
       con.setDoInput(true); 
       OutputStream outputStream = con.getOutputStream(); 
       BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8")); 
       bufferedWriter.write(dataToSend); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       outputStream.close(); 

       InputStream inputStream = con.getInputStream(); 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream)); 
       String result = ""; 
       while(bufferedReader.readLine()!=null) { 
        result+= bufferedReader.readLine(); 
       } 
       bufferedReader.close(); 
       inputStream.close(); 
       con.disconnect(); 
       return result; 
      } 
      catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
    } 
    @Override 
    protected void onPostExecute(String result) { 
     if (result!=null) { 
      alertDialog.setMessage(result); 
      alertDialog.show(); 
     } 
     else { 
     } 
    } 
} 

PHP:

$con = mysqli_connect("**********.com","**********name","*********","*******_PARKLOG"); 

if (mysqli_connect_errno($con)){ 
    echo "Error Connect to database"; 
} 

$name = $_POST["name"]; 
$username = $_POST["username"]; 
$password = $_POST["password"]; 

$check = mysqli_prepare($con,"select * from account where username = ?"); 
mysqli_stmt_bind_param($check,"s",$username); 
mysqli_stmt_execute($check); 
mysqli_stmt_store_result($check); 
$row_count = mysqli_stmt_num_rows($check); 
if($row_count == 1){ 
    echo "User already exist, please change a username"; 
} 
else{ 
    $statement = mysqli_prepare($con,"INSERT INTO account (name,username,password) VALUES (?,?,?)"); 
    mysqli_stmt_bind_param($statement,"sss",$name,$username,$password); 
    $result = mysqli_stmt_execute($statement); 

    if($result == true) { 
     echo "Sign up successful"; 
    } 
    else{ 
     echo "Fail doing operation in database"; 
    } 
} 
//mysqli_stmt_close($statement); 
mysqli_close($con); 

wo es angeblich die PHP-Nachricht zu zeigen, wie "Registrieren erfolgreich" oder „Benutzer bereits vorhanden , ändern Sie bitte einen Benutzernamen "oder eine andere Art von Fehlermeldung, aber es zeigt nur -1. Was bedeutet, dass irgendwo irgendwo falsche Server antworten. Wo, wenn falsch und wie soll ich es beheben. (Auch dieses Programm wird an das Einfügen von Daten in die Datenbank arbeiten, aber es wird die gleiche Nachricht geben -1) (Die androide Manifest-Datei ist korrekt.)

+0

_ist dies das Problem mit Server? _ versuchen, Anfrage mit einer REST-Client-Anwendung, wie Postman-Plugin für Chrom. Wenn der Server wie erwartet reagiert, funktioniert Ihr Server möglicherweise korrekt und es könnte Probleme mit Ihrem Android-Code geben. Ich empfehle Ihnen, Netzwerk-Bibliotheken wie Volley zu verwenden, um Aufrufe an Server anstelle von 'Asynctasks' und konventionellen' HttpUrlConnection' – SripadRaj

+0

Ich versuchte es durch eine Testmethode, wo Server richtig reagieren. Also muss es irgendwo mit der Leseeingabe falsch liegen. Irgendeine Korrektur? Auch es ist eine kleine Handlung, deshalb habe ich asynctasks verwendet. – 123name

Antwort

0

Problem mit Hilfe behoben Volley, obwohl ich nicht extra Bibliothek in meinem Projekt verwenden möchte, danke trotzdem