PHP Wamp 服务器未从 AlamoFire 请求接收参数


PHP Wamp server not receiving parameters from AlamoFire request

当我收到来自AlamoFire的请求时,PHP中的脚本无法识别POST,GET和REQUEST变量中的参数。

AlamoFire中的代码是

let parameters: [String: AnyObject] =
        ["email" : email,
         "password": password]
    Alamofire.request(.POST, url, parameters: parameters, encoding: .JSON)
        .responseJSON { response in
            print(response)
            switch response.result {
            case .Success: // Connection stablished

            case .Failure(let error): //  Connection not stablished
               print(error)
               self.showLoginError(Constants.connectionError)
            }
    }

php 中的代码是:

$response = array();
header('Content-Type: application/json');
if (isset($_POST['email']) && isset($_POST['password'])) {
  ... stuff
}else{
    $response["Failure"] = 1;
    $response["message"] = "Required field(s) is missing";
    echo json_encode($response);
}

然后 AlamoFire 中的响应始终是带有必填字段消息的 JSON

有一次PHP给了我这个错误:PHP 已弃用:不推荐自动填充 $HTTP_RAW_POST_DATA 已被弃用,并将在未来的版本中删除。要避免此警告,请在 php 中将"always_populate_raw_post_data"设置为"-1".ini并改用 php://input 流。在 未知 在第 0 行

我已经更改了 php.ini 可以选择 always_populate_raw_post_data 到 -1 并将我达到我现在的状态。

但是,如果请求 URL 如下所示 http://192.168.1.108:8080/labor/login.php?email=slicingit@yahoo.com&password=brown1234 服务器将接收参数。此外,如果我使用 NSURLSession 创建请求,并将参数作为 HTTP 正文的一部分,服务器确实会获取它们。

你怎么知道它没有收到它?你怎么知道阿洛姆火是否在发送它?使用"echo"查看Alomfire在PHP脚本中带回了什么。如果确实是 JSON 值,请记住,必须先解码 JSON 值,然后才能使用或分配它们。如何解码 json

 $mymail= ($_POST['email']);
 $mypass= ($_POST['password']);
 echo $mymail;
 echo $mypass;
 //Decode your json first here
 if ($mymail && $mypass) {
     ... stuff
 }else{
 $response["Failure"] = 1;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);

}