POST请求未正确到达httpClient - ionic - PHP

v8wbuo2f  于 11个月前  发布在  PHP
关注(0)|答案(1)|浏览(113)

我正在用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的两个键,usernamepassword)。

这是提供者的代码:

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}
如有任何帮助,我们将不胜感激。

5w9g7ksd

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的数据

相关问题