2016-06-13 2 views
0

AsyncTask основного метода:Не адресности правильного ответа сервера в приложении для Android

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); 

, где он должен показать сообщение PHP как «Зарегистрироваться успешным» или «Пользователь уже существует , пожалуйста, измените имя пользователя "или любой другой тип сообщения об ошибке, но оно отображает только -1. Это означает, что есть где-то дать мне неправильный ответ сервера. Где, когда неправильно, и как его исправить. (Кроме того, эта программа будет работать с вставкой данных в базу данных, но она будет давать одно и то же сообщение -1) (Файл манифеста андроида верен.)

+0

_is this issue with server? _ попробуйте сделать запрос с помощью клиентского приложения REST, например плагина postman для chrome. Если сервер отвечает так, как ожидалось, ваш сервер может работать правильно, и может возникнуть проблема с вашим кодом Android. Я предлагаю вам использовать сетевые библиотеки, такие как volley, для вызова на сервер вместо 'Asynctasks' и обычного' HttpUrlConnection' – SripadRaj

+0

Я попробовал его с помощью тестового метода, в котором сервер отвечает правильно. Поэтому он должен быть где-то не так с входом для чтения. Любая коррекция? Кроме того, это небольшое действие, поэтому я использовал asynctasks. – 123name

ответ

0

вопрос исправлен с использованием волейбол, хотя я не хочу использовать дополнительную библиотеку в своем проекте, спасибо в любом случае

Смежные вопросы