【问题标题】:Not geting correct server respond in android app在android应用程序中没有得到正确的服务器响应
【发布时间】:2016-06-13 00:28:08
【问题描述】:

AsyncTask 主方法:

    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)(android manifesto 文件是正确的。)

【问题讨论】:

  • 这是服务器的问题吗? 尝试使用 REST 客户端应用程序发出请求,例如 chrome 的邮递员插件。如果服务器按预期响应,那么您的服务器可能工作正常,并且您的 android 代码可能存在问题。我建议你使用像 volley 这样的网络库来调用服务器而不是 Asynctasks 和传统的 HttpUrlConnection
  • 我通过服务器正确响应的测试方法进行了尝试。所以读取输入一定有问题。有什么更正吗?这也是一个小动作,因此我使用了异步任务。

标签: java php android server-response


【解决方案1】:

即使我不想在我的项目中使用额外的库,也可以通过使用 volley 解决问题,谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 1970-01-01
    • 2015-07-24
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多