2016-07-18 6 views
0

私はアプリを開発しており、投稿にalamofireを使用する必要があります。 しかし、私はエラーが発生し続けると、Swift:Alamofire Post

FAILURE エラー:フィードバック提出に失敗しました。 オプション(「操作を完了できませんでした。JSONをシリアライズすることができませんでした。入力データがnilまたはゼロの長さでした。」)

私のコードは、私がしても問題がなかったこの

let reportJSON: [String : AnyObject] = [ 
    "Name" : nameTextField.text!, 
    "Message" : reportTextView.text! 
    ] 
Alamofire.request(.POST, "API", parameters: reportJSON, encoding: .JSON).responseJSON{ response in 
    print(response.result) 

    guard response.result.error == nil else{ 
     print("Error: feedback submission failed.") 
     print(response.result.error?.localizedDescription) 
     return 
    } 

    if let responseValue = response.result.value{ 
     let recipeList = JSON(responseValue) 
     print(recipeList) 
    } 
} 

のように見えます。 GET、しかし私は.POSTを使う方法を理解できません。 何か助けていただければ幸いです。

+0

これを解決しました。たぶんそれは他のものには明らかですが、私が受け取っていたデータはJSON形式ではありませんでした。 ResponseJSONの代わりに、私はresponseDataを使用しなければなりませんでした。 – hikki

答えて

0

"API"の代わりに正しいURLを渡していないようですが、投稿の有効なURLに変更されています。

+0

私は会社のプライベートURLを使用していますので、私はAPIを呼び出すだけですが、私のアプリケーションでは適切なURLを使用しています – hikki

0

あなたはAlamofireとスウィフト3を使用してPOSTリクエストのために以下の方法を使用することができます。

let headers = [ 
       "Accept": "application/json", 
       "Authorization" : "Authorization: Bearer ", //if any 
       "Cookie" : "Cookie" //if any 
       ] 

let parameterDict: NSDictionary = NSDictionary.init(objects: [nameTextField.text!, reportTextView.text!], forKeys: ["Name" as NSCopying,"Message" as NSCopying]) 

Alamofire.request("API",method: .post, parameters: parameterDict as? [String : AnyObject] , encoding:JSONEncoding.default, headers:headers) .responseJSON { response in switch response.result { 

    case .success(let JSON): 
     print("Success with JSON: \(JSON)") 
     let response = JSON as! NSDictionary 

    case .failure(let error): 
     print("Request failed with error: \(error)") 


     } 
    } 
0

POSTメソッドのためのJSON解析のために、次のコードを使用することができます。

Alamofire.request("URL" , method : .post, 
         headers: headers) 
     .responseJSON { response in 
      // do whatever you want here 
      switch response.result { 
      case .failure(let error): break 
       self.popupp(elrtdata : "Please try again latter.") 
      case .success(let responseObject): 

       if((response.result.value) != nil) { 

        do{ 
         let swiftyJsonVar = JSON(response.result.value!) 
         print(swiftyJsonVar) }