POST请求无法正确到达httpClient-ionic-php

时间:2019-03-10 15:07:23

标签: php api httpclient ionic4

我正在用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全局变量。

  • 邮递员:发送带有标头x-www-form-urlenconded的POST请求并指定键和值,服务器会捕获这些键。
  • 离子:使用HttpClient发送POST请求将不起作用。 (服务器为nullusername这两个键都捕获了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函数时,所有参数都不为空,因此问题出在请求中。

对于您感兴趣的人,服务器的答案是:

{message: "Unauthorized", username: null, success: false}

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我要复制我的评论作为答案,因为我想发布照片。 假设您使用的是Angular的HttpClient,请尝试指定要通过POST发送的类型:尝试执行以下操作。http.post(url,'string',opts);。 我还建议您查看通过Chrome的Inspector(在Windows / Linux上为F12,在Mac上为Cmd + Options + I),“网络”标签按请求发送的内容。 显然,您必须先打开它,然后再发送要由DevTools捕获的请求。如果您直接通过电话进行调试,则可以在Windows / Linux上使用Chrome的DevTools上的“远程设备”标签,或者在Mac上使用Safari。 使用Chrome的DevTools的示例: