2016-05-11 32 views
0

我在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 [「參數」]

我做錯了什麼?

謝謝。

編輯:

仍然會瘋狂的。安裝查爾斯檢查什麼是走出我的電腦的要求,這裏有雲:

enter image description here

編輯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永久移動

+0

另一個評論是,我註釋了REQUEST_METHOD上的檢查,然後在第二個條件失敗,檢查是否存在_POST參數。當然這是預料之中的。我會認爲Alamofire也發送我的參數_GET –

+0

Alamofire 3.4 btw –

回答

1

終於找到了問題所在。

我的請求URL設置爲http://server.com/api

當我把它改成http://www.server.com/api

這引起了它的工作。我不知道爲什麼會發生這種情況,如果這與.httpccess有關,但就是這樣。