在 php 中使用 json 对象响应 http get 请求
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
}
});
希望对您有所帮助
我有一个 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
}
});
希望对您有所帮助