我正在用PHP创建一个REST API。服务login
是:
<?php
include_once 'libs/Database.php';
header("Content-Type: application/json; charset=UTF-8");
Database::getPDO();
$myObj = null;
if ( Database::check($_POST['username'], $_POST['password']) ) {
$myObj = array('message' => "Verified", 'success' => true);
} else {
$myObj = array('message' => "Unauthorized", 'username' => $_POST['username'], 'success' => false);
}
$myJSON = json_encode($myObj);
echo $myJSON;
?>
字符串
正如你所看到的,我正在访问$_POST
全局变量。
- Postman:发送一个POST请求,头部为
x-www-form-urlenconded
,并指定键和值,服务器会捕获这些键。 - Ionic:使用
HttpClient
发送POST请求将不起作用。(服务器捕获null
的两个键,username
和password
)。
这是提供者的代码:
login(user, pass, url) {
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded'
})
};
return this.http.post(url, "username="+user+"&"+"password="+pass, httpOptions);
}
型
我想知道body
应该如何格式化,根据this link应该像我做的那样(username=user&password=pass
)。顺便说一下,当调用login
函数时,所有参数都不是null,因此,问题在于请求。
对于那些感兴趣的人,服务器的答案是:
{message:“Unauthorized”,username:null,success:false}
如有任何帮助,我们将不胜感激。
1条答案
按热度按时间5w9g7ksd1#
我复制我的评论作为答案,因为我想发布一张照片。
假设你正在使用Angular的HttpClient,试着指定你通过POST发送的类型:试着做一些像
this.http.post<string>(url, 'string', opts);
的事情。我还建议你看看你通过Chrome的Inspector(Windows/Linux上的F12,Mac上的Cmd+Options+I),Network选项卡发送的请求。
如果你直接通过手机调试,在Windows/Linux上,你可以使用Chrome的DevTools上的Remote Devices标签,或者Mac上的Safari。
一个使用Chrome DevTools的例子:
x1c 0d1x的数据