【问题标题】:Retrieving string from MySQL-DB with java (eclipse) through json通过json使用java(eclipse)从MySQL-DB中检索字符串
【发布时间】:2012-11-27 20:38:48
【问题描述】:

我正在尝试为 Android(在 Eclipse 中)编写登录系统,并且必须从外部 MySQL-DB 获取数据。

来源我拿了它的代码:Connecting to MySQL Database

我试图从中获取数据的网站是here。(我知道存在一些安全问题,blabla,这不是我现在的问题^^)

我遇到的问题是,当我尝试运行应用程序时,出现“未找到密码”错误。 此错误在此代码中被捕获:

ArrayList<String> passwort = new ArrayList<String>();
ArrayList<String> benutzer = new ArrayList<String>();
try{
  jArray = new JSONArray(result);
  JSONObject json_data=null;
  for(int i=0;i<jArray.length();i++){
         json_data = jArray.getJSONObject(i);
         passwort.add(json_data.getString("pw"));
         benutzer.add(json_data.getString("benutzer"));

     }
  Intent intent = new Intent(this, MainActivity.class);
  intent.putExtra("arrayBenutzerExtra", benutzer);
  intent.putExtra("arrayPasswortExtra", passwort);
  startActivity(intent);

    }
    catch(JSONException e1){
      Toast.makeText(getBaseContext(), "No Password found" ,Toast.LENGTH_LONG).show();
    } catch (ParseException e1) {
        e1.printStackTrace();
}

另外,这是我与网站连接的代码,但这似乎不是问题,尽管我没有收到有关此的错误消息!

try{
 HttpClient httpclient = new DefaultHttpClient();
 HttpPost httppost = new HttpPost("http://winklermarkus.at/appconnection.php");
 httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
 HttpResponse response = httpclient.execute(httppost);
 HttpEntity entity = response.getEntity();
 is = entity.getContent();
   }catch(Exception e){
     Log.e("log_tag", "Error in http connection"+e.toString());
   }

.php 文件的代码在这里:

$sql_pw = "SELECT ". "Passwort ". "FROM ". "benutzerdaten ";
    $result_pw = mysql_query ($sql_pw); 
    $data_pw = mysql_fetch_array ($result_pw);
    $pw = $data_pw["Passwort"];

    $sql_benutzer = "SELECT ". "Email ". "FROM ". "benutzerdaten ";
    $result_benutzer = mysql_query ($sql_benutzer); 
    $data_benutzer = mysql_fetch_array ($result_benutzer);
    $benutzer = $data_benutzer["Email"];

print(json_encode($pw));
print(json_encode($benutzer));

mysql_close();
?>

正如 Perception 提到的,我没有得到有效的 JSON 输出,这可能与我有关,试图一次传输 2 个字符串?

【问题讨论】:

  • 你能粘贴你试图解析的json响应吗?
  • 您在 HttpPost 之后找到了 JSON 字符串。请检查一下。可能问题就在这里?
  • 始终在处理响应数据之前检查您的 HTTP 请求的状态代码。有关主题的更多信息,您在问题中链接的服务确实 not 返回有效的 JSON。
  • @Perception 哦,好的,这可能是真正的问题,我会将 php 代码添加到我的问题中!
  • 我怀疑 php 结果是一个有效的 JSON 数组

标签: java android eclipse json


【解决方案1】:

您的 PHP 代码没有按照您的想法执行。我无法推荐修复它,因为您已经创建了一个重大 安全漏洞。

作为一种替代策略,不是将所有密码和所有电子邮件发送给客户端(以非关联方式),而是将客户端散列密码和电子邮件发送给服务(通过 SSL)。然后在服务端查询数据库中是否有电子邮件/密码的组合。如果确实返回登录成功,否则返回登录失败。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-19
    • 2021-12-28
    • 1970-01-01
    • 2018-05-22
    相关资源
    最近更新 更多