android — отвечает на запрос http get с помощью объекта json в Stack Overflow

у меня есть PHP страница (test.php), которая должна ответить на запрос HTTP GET, отправленный из приложения Android.
Ответ должен быть через объект 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>";
?>

1

Решение

Я думаю, что это может помочь вам ..

<?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

Другие решения

Если это API для Android-приложения, которое вы упомянули, то вы не можете использовать в нем сеансы.
Вы должны найти другой способ авторизации пользователя.

Вы можете кодировать свои строки и массивы в формате 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, я рекомендую вам использовать библиотеку Запрос.

Библиотека может упростить вашу работу с 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
}
});

Я надеюсь, это поможет вам

0

Вы можете отправить свой ответ в виде данных, закодированных в формате json, например, скажем, ваши данные ответа

$user = array('firstName' =>'abc', 'lastName' =>'xyz');
$response = json_encode($user);
0
По вопросам рекламы [email protected]