我的Android应用程序具有如下所示的API。我可以使用Chrome的邮递员应用程序对其进行测试。
<?php
require_once 'include/DB_Functions.php';
require_once 'include/utility.php';
$db = new DB_Functions();
$response = array("error" => FALSE);
if (isset($_POST['membership']) && isset($_POST['orderid']) && isset($_POST['email'])) {
$time = getDatetimeNow();
$membership = $_POST["membership"];
$orderid = $_POST["orderid"];
$email = $_POST["email"];
$response = $db->premium($membership, $orderid, $email, $time);
echo json_encode($response);
} else {
// required post params is missing
$response["error"] = TRUE;
$response["error_msg"] = "Required parameters email, orderid and membership are missing!";
echo json_encode($response);
}
?>
它工作正常,没有任何问题,但是我有一些类似的api,我想直接从浏览器中对其进行测试,但出现参数丢失错误。
我正在尝试使用以下网址
https://example.com/api/premium.php?membership=1&orderid=123&email=myemail@mail.com
它给我errr缺少参数。任何人都可以建议我如何使用浏览器而不是邮递员进行检查? 谢谢
答案 0 :(得分:1)
您正尝试通过 GET 请求发送数据,但这与 POST 不同。 您不能仅将变量放在URL中并像POST数据一样发送它,因为POST数据是在正文或请求中发送的。您可以read here
如果要通过POST发送数据,则可以创建一个小格式的HTMJL页面并通过POST发送,例如:
<form action="https://example.com/api/premium.php" method="POST">
<input type="text" name="membership" value="1">
<input type="text" name="orderid" value="123">
<input type="text" name="email" value="myemail@mail.com">
<input type="submit">
</form>
答案 1 :(得分:0)
您不能将电子邮件作为查询字符串发送,因为URL中的保留字符必须被编码为有效字符,否则它们模棱两可,并且可能在URL中用于保留目的。 @是保留字符,必须编码为%40。
PHP会为您解码。它对您透明,您甚至不必担心。