我在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 –