2015-02-07 159 views
1

我有一個PHP page(test.php),它必須響應從android應用程序發送的HTTP GET請求。 響應必須通過json對象。我怎麼做?在php中響應http獲取請求與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>"; 
    ?> 

回答

0

我認爲它可以幫助你..

<?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); 
     } 
+0

所有的答案都是有用的,但這種感覺更「有用」。謝謝你們 – 2015-04-15 08:57:03

0

您可以發送例如作爲JSON編碼數據的響應讓說你的響應數據

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

如果是,那麼你提到你在那裏不能使用會話的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 
    } 
    }); 

我希望這有助於你