簡體   English   中英

用PHP中的json對象響應http獲取請求

[英]respond to http get request with json object in php

我有一個PHP頁面(test.php),該頁面必須響應從android應用程序發送的HTTP GET請求。 響應必須通過json對象。 我怎么做?

供參考:-下面是一個PHP代碼,用於檢查登錄表單中的登錄詳細信息。 http請求是從包含登錄表單的android應用程序發送的用戶名和密碼。 該頁面的響應將是成功或失敗消息。

<?php
        session_start();
         require('connect.php');
        if (isset($_GET['username']) and isset($_GET['password']))
        {
            $username = $_GET['username'];
            $password = $_GET['password'];
            $query = "SELECT * FROM `staff_reg` WHERE username='$username' and password='$password'";

            $result = mysql_query($query) or die(mysql_error());
            $count = mysql_num_rows($result);
            if ($count == 1)
            {
                $_SESSION['username'] = $username;
            }
            else
            {
                echo "Invalid Username or Password";
            }
        }
        if (!isset($_SESSION['username']))
        {
            echo "Session Expired";
            echo "<br><a href='staff_login.php'>Click here</a> to login again"; 
            echo "<br><a href='index.html'>Click here</a> to go back to the homepage"; 
            $username = $_SESSION['username'];
        }
        else{
            $username = $_SESSION['username'];
            echo "<p>Welcome ".$username."<br>";
            echo "This is the Staff Portal<br>";
            echo "<a href='logout.php'>Logout</a></p>"; 
    ?>

我認為這可能對您有幫助。

<?php
        session_start();
         require('connect.php');
        //create an variable $response
        //Use GET instead of POST since you are sending data in GET method
        if (isset($_GET['username']) and isset($_GET['password']))
        {
            $username = $_GET['username'];
            $password = $_GET['password'];
            $query = "SELECT * FROM `staff_reg` WHERE username='$username' and password='$password'";

            $result = mysql_query($query) or die(mysql_error());
            $count = mysql_num_rows($result);
            if ($count == 1)
            {
                $response="Success";
            }
            else
            {
                $response="Failure";
            }
        //now echo it as an json object
            echo json_encode($response);
        }

您可以將響應作為json編碼數據發送,例如,假設您的響應數據為

$user = array('firstName' =>'abc', 'lastName' =>'xyz'); 
$response = json_encode($user);

如果這是您提到的android應用程序的api,則無法在其中使用會話。 您必須找到另一種授權用戶的方式。

您可以將字符串和數組編碼為json格式,但最好創建一個對象並對其進行編碼。 這樣,您可以通過在api中指定的名稱訪問值。

例如:

$obj->status = "error";

要么

$obj->status = "success";

最后:

echo json_encode($obj);

您可以使用以下格式在應用程序中訪問它:

   //String response = httpResponse
   JsonObject object = new JsonObject(response);
   String status = object.getString("status");
   if(status.equals("error")){
        //handle the error
   } else {
        //login was successful and you can show the user the proper activity
   }

至於將請求發送到api,我建議您使用庫AQuery

該庫可以簡化使用http請求的工作。 它的工作方式如下:

    AQuery aq = new AQuery(context);
    aq.ajax(url, JsonObject.class, new AjaxCallback<JsonObject>(){
    @Override
    public void callback(String url, JSONObject object, AjaxStatus status) {
        //object is the json object sent from the server
    }
    });

我希望這可以幫助你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM