我在iOS 9中使用Alamofire,并且注意到Alamofire未在POST方法中将参数发送到我的PHP脚本。Alamofire无法识别POST方法以及参数
这是PHP脚本:
if($_SERVER['REQUEST_METHOD'] != 'POST') {
echo '{"status": "error", "message" : "Only POST supported. You sent: '.$_SERVER['REQUEST_METHOD'].'"}';
return;
}
if (!isset($_POST['GENDER']) || !isset($_POST['CHAR_COUNT_LOWER']) || !isset($_POST['CHAR_COUNT_UPPER'])) {
echo '{"status": "error", "message" : "Minimum parameters not set."}';
return;
}
然后,烧成我Alamofire POST请求时,我得到的消息:
迅速:55 fetchData(_:completionHandler :):只有 POST支持。您发送:GET
最后,这是我的Alamofire要求:
Alamofire.request(.POST, url, parameters: ["CHAR_COUNT_LOWER":String(lowerValue), "CHAR_COUNT_UPPER":String(upperValue), "GENDER": String(gender!)])
.validate()
.responseJSON { response in
QL1(response.description)
switch response.result {
case .Success:
var result = [BabyNames]()
let json = JSON(data: response.data!)
if json["status"] == "error" {
QL4(json["message"])
completionHandler(babyNames: [], error: StoreError.CannotFetch("Could not retrieve baby names"))
return
}
.......
我也试图改变编码一切,但JSON,因为我的服务不采取JSON作为输入。 这是一个简单的服务,读取$ _POST [“参数”]
我做错了什么?
谢谢。
编辑:
仍然会疯狂的。安装查尔斯检查什么是走出我的电脑的要求,这里有云:
编辑2:
更改Alamofire请求编码到JSON:
Alamofire.request(.POST, url, parameters: parameters!, encoding: ParameterEncoding.JSON)
现在我可以看到一个GET和一个POST请求。 POST请求:
URL http://example.com/backend/names/query_names.php 状态完成二维码301永久移动
另一个评论是,我注释了REQUEST_METHOD上的检查,然后在第二个条件失败,检查是否存在_POST参数。当然这是预料之中的。我会认为Alamofire也发送我的参数_GET –
Alamofire 3.4 btw –