【发布时间】:2016-04-23 20:48:23
【问题描述】:
当我收到来自 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.ini 中将“always_populate_raw_post_data”设置为“-1”,并改用 php://input 流。在第 0 行的未知中
我已将带有 always_populate_raw_post_data 选项的 php.ini 更改为 -1,并达到我现在的状态。
但是如果请求的 URL 是这样的 http://192.168.1.108:8080/labor/login.php?email=slicingit@yahoo.com&password=brown1234 服务器接收参数。此外,如果我使用 NSURLSession 创建请求,并将参数作为 HTTP 正文的一部分,服务器确实会获取它们。
【问题讨论】:
标签: php ios swift wamp alamofire