当我收到来自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);
}