Php Android登录测试

Php Android登录测试,php,android,Php,Android,我正在开发我的第一个登录。我也读过一些其他的文章,但这篇文章对我来说似乎很简单/直观,特别是当我想做一些比登录更重要的事情时 我必须对使用的PHP脚本进行一些更改 更新我有两个php脚本,这是正确的,最后一个是for_GET方法 <?php $con=mysql_connect("...");//deleted for privacy mysql_select_db("..");//deleted for privacy if (!$con) { echo "Failed to co

我正在开发我的第一个登录。我也读过一些其他的文章,但这篇文章对我来说似乎很简单/直观,特别是当我想做一些比登录更重要的事情时

我必须对使用的PHP脚本进行一些更改

更新我有两个php脚本,这是正确的,最后一个是for_GET方法

<?php
$con=mysql_connect("...");//deleted for privacy
mysql_select_db("..");//deleted for privacy
if (!$con)
{
   echo "Failed to connect to MySQL: " . mysql_error();
   die();
}
$username = $_POST['username'];
$password = $_POST['password'];

$query=mysql_query("SELECT username FROM users");
echo $query;echo $query;echo $query;echo $query;
if($query){
    $row = mysql_fetch_assoc($query);
    $data = $row['username'];
    echo $data;
}else{
    echo "something went wrong:".mysql_error();
}
mysql_close($con);
?>

无论如何,我认为错误不在PHP中,因为我在浏览器上使用用户名/密码URL中的适当值运行脚本,它会打印出我要查找的响应(这只是用户名)。 这是我修改后的意义

package com.example.phpmysql;
   public class LogInBackgroundActivity  extends AsyncTask<String,Void,String>{
   private Context context;
   public AsyncResponse delegate=null; 
   public LogInBackgroundActivity(Context context) {
      this.context=context;
   }
   @Override
   protected String doInBackground(String... arg0) {
      String address ="...";//hidden for privacy
     try{
        String username = (String)arg0[0];
        String password = (String)arg0[1];
        address+="login_post.php";
        String data  = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode(username, "UTF-8");
        data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8");
        URL url = new URL(address);
        URLConnection conn = url.openConnection(); 
        conn.setDoOutput(true); 
        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
        wr.write( data ); 
        wr.flush(); 
        BufferedReader reader = new BufferedReader(new     InputStreamReader(conn.getInputStream()));
        StringBuilder sb = new StringBuilder();
        String line = null;
        // Read Server Response
        while((line = reader.readLine()) != null){
           sb.append(line);
           break;
        }
        return sb.toString();
     }catch(Exception e){
        return new String("Exception: " + e.getMessage());
     }
  }   
   @Override
   protected void onPostExecute(String result){

       if(result.length()>0)
      delegate.processFinished(result);
       else
           delegate.processFinished("Something Odd");
   }
}
package com.example.phpmysql;
公共类LogInBackgroundActivity扩展异步任务{
私人语境;
公共异步响应委托=null;
公共登录BackgroundActivity(上下文){
this.context=context;
}
@凌驾
受保护的字符串doInBackground(字符串…arg0){
String address=“…”;//为保护隐私而隐藏
试一试{
字符串用户名=(字符串)arg0[0];
字符串密码=(字符串)arg0[1];
地址+=“login_post.php”;
字符串数据=urlcoder.encode(“用户名”,“UTF-8”)+“=”+urlcoder.encode(用户名,“UTF-8”);
数据+=“&”+URLEncoder.encode(“密码”,“UTF-8”)+“=”+URLEncoder.encode(密码,“UTF-8”);
URL=新的URL(地址);
URLConnection conn=url.openConnection();
连接设置输出(真);
OutputStreamWriter wr=新的OutputStreamWriter(conn.getOutputStream());
wr.写入(数据);
wr.flush();
BufferedReader=新的BufferedReader(新的InputStreamReader(conn.getInputStream());
StringBuilder sb=新的StringBuilder();
字符串行=null;
//读取服务器响应
而((line=reader.readLine())!=null){
某人附加(行);
打破
}
使某人返回字符串();
}捕获(例外e){
返回新字符串(“异常:+e.getMessage());
}
}   
@凌驾
受保护的void onPostExecute(字符串结果){
if(result.length()>0)
委托。处理完成(结果);
其他的
delegate.processFinished(“奇怪的事情”);
}
}
我从教程中了解到,php脚本上打印的所有内容都会通过
onPostExecute(..)
返回。AsyncResponse只是我创建的一个接口,用于将数据传输回主活动

这是我想要的数据,它返回为空


我正在一台真正的设备上进行测试,因此没有logcat报告。

我使用了教程中使用的
mysqli.*
,这似乎解决了问题