使用Android Studio、MySQL和php文件,在何处以及如何保存JSON响应类型

使用Android Studio、MySQL和php文件,在何处以及如何保存JSON响应类型,php,android,mysql,json,Php,Android,Mysql,Json,我正在学习下面的教程。 我看到了这个目录概览图,并且在第3.3节中注意到一些JSON响应类型。我知道它们是php代码中的回声,这取决于用户注册和登录成功与否。 但我不知道如何以及在哪里保存这些JSON文件。除此之外,本教程非常详细。我还没有处理JSON API和其他对象 本教程并不是说您应该使用JSON文件,而是说在将响应作为一种数据交换格式语言形成时,您应该使用JSON作为一种语言构造 它还表示应用程序堆栈(范围的两端)应该期望使用JSON在彼此之间进行通信 正如本文描述的使用数据库一样,您将

我正在学习下面的教程。 我看到了这个目录概览图,并且在第3.3节中注意到一些JSON响应类型。我知道它们是php代码中的回声,这取决于用户注册和登录成功与否。
但我不知道如何以及在哪里保存这些JSON文件。除此之外,本教程非常详细。我还没有处理JSON API和其他对象

本教程并不是说您应该使用JSON文件,而是说在将响应作为一种数据交换格式语言形成时,您应该使用JSON作为一种语言构造

它还表示应用程序堆栈(范围的两端)应该期望使用JSON在彼此之间进行通信

正如本文描述的使用数据库一样,您将与数据库进行比较,以验证并向应用程序提供JSON响应。这就是PHP方面的情况

//assume data passed from app is in JSON format.
$variables = isset($_POST['variables']) : json_decode($_POST['variables']) : false;

//given the above, assume we have 2 keys, username and password.
// as we've applied json_decode above, we can now treat the string as an array with keys to access our values.

//use prepared statements when accepting user input!
$stmt = $mysqli->prepare('select id from user where user = ? and password = MD5(?)');
$stmt->bind_param('ss', $variables['username'], $variables['password']);
$stmt->execute();
$stmt->store_result();

//now we can count the returned rows and then return our response.

$resp = array();
if(count($stmt->num_rows) > 0){
    $resp['msg'] = 'Successfully logged in.';
    $resp['status'] = 1;
} else {
    $resp['msg'] = 'Failed to login! Username or password or both are incorrect.';
    $resp['status'] = 0;
}

return json_encode($resp);
现在,在android应用程序中,您可以解码此json结果并检查状态,然后显示消息

大致的草图可能如下所示:

DefaultHttpClient   httpclient = new DefaultHttpClient(new BasicHttpParams());
HttpPost httppost = new HttpPost(http://path.to.your.site.tld/login-endpoint);
//we will need this so we can send JSON to the server.
httppost.setHeader("Content-type", "application/json");

//other stuff to build out query and send username and password
//not shown for brevity...

InputStream inputStream = null;
String result = null;
try {
    HttpResponse response = httpclient.execute(httppost);           
    HttpEntity entity = response.getEntity();

    inputStream = entity.getContent();
    // json is UTF-8 by default
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"), 8);
    StringBuilder sb = new StringBuilder();

    String line = null;
    while ((line = reader.readLine()) != null)
    {
        sb.append(line + "\n");
    }
    result = sb.toString();
} catch (Exception e) { 
    // Oops
}
finally {
    try{if(inputStream != null)inputStream.close();}catch(Exception squish){}
}

最后,通过将JSON对象的表示保存在
result
中(只要没有发生故障),我们可以解析结果并检查服务器应该响应的键的值,即msg&status

JSONArray jArray = jObject.getJSONArray(result);
for (int i=0; i < jArray.length(); i++)
{
    try {
        JSONObject oneObject = jArray.getJSONObject(i);
        // Pulling items from the array
        String msg = oneObject.getString("msg");
        String status = oneObject.getString("status");
    } catch (JSONException e) {
        // Oops
    }
}
JSONArray jArray=jObject.getJSONArray(结果);
for(int i=0;i
现在,您可以根据身份验证后服务器提供的消息和状态响应执行任何操作


祝你好运。

请复制粘贴你引用的代码行/文件。.我指的是:{“错误”:false,“uid”:“55fa7220a2c187.50984590”,“用户”:{“名称”:“Ravi Tamada”,“电子邮件”:ravi@androidhive.info,“创建时间”:“2015-09-17 13:26:16”,“更新时间”:null}表示您想存储php文件并从中获取JSON响应?如果您查看Login.php文件,尤其是下面的代码,如果输入的数据与MySQL数据库中存储的行不匹配,则用户无法登录:If($user!=false){$response[“error”]=false;$response[“uid”]=$user[“unique_id”];$response[“user”][“name”]=$user[“name”];$response[“user”]=“email”]=$user[“email”];$response[“user”]=“created_at”]=$user[“created_at”];$response[“updated_at”]=$user[“updated_at”];echo json_encode($response)}json响应在每个条件循环的末尾进行回音,如此回音编码($response);我不知道应该将这些JSON响应文件保存在哪里(谢谢!)我重复了几遍才明白你所解释的一切,但最终还是有道理的。