2016-12-20 76 views
0

我正嘗試使用Alamofire訂閱新用戶到Mailchimp列表。Alamofire Mailchimp API 3.0訂閱

func subscribeMail(){ 

let credentialData = "<my_api_key>".data(using: String.Encoding.utf8)! 
let base64Credentials = credentialData.base64EncodedString(options: []) 
let headers = ["Authorization": "Basic \(base64Credentials)"] 

let url = "https://us11.api.mailchimp.com/3.0/lists/<my_list_id>/members/" 

let jsonObj: [String: AnyObject] = [ 
    "mail_address" : "[email protected]" as AnyObject, 
    "status" : "subscribed" as AnyObject, 
] 

let valid = JSONSerialization.isValidJSONObject(jsonObj) 
print(valid) 

Alamofire.request(url, method: .post, parameters: jsonObj , encoding: URLEncoding.default , headers: headers).responseJSON{response in 
    if response.result.isFailure { 
     print("Failed") 
    } 
    else if (response.result.value as? [String: AnyObject]) != nil { 
     print(response) 
     } 
    } 

} 

我找回狀態碼400:

SUCCESS: { 
detail = "We encountered an unspecified JSON parsing error."; 
instance = ""; 
status = 400; 
title = "JSON Parse Error"; 
type = "http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/"; 
} 

在Mailchimp文檔:

問題,當我試圖認購新用戶。員額法的JSONObject作爲參數啓動

JSONParseError

我們遇到了一個unspeci發生JSON解析錯誤。 此錯誤表示您的JSON格式不正確或被認爲無效或不完整。

正如你可以看到我檢查我的jsonObj如果有效。所以,我不明白這個解析錯誤..

在Mailchimp API 3.0書面只是EMAIL_ADDRESS和需要狀態字段認購新郵件。

如果我嘗試使用方法。獲得與已訂閱一些郵件地址與Alamofire發送請求時,一切工作正常,我可以從Mailchimp接收的所有數據。

真的有問題,我的jsonObj還是在別的地方?

回答

0

將對象鍵從'mail_address'更改爲'email_address'並試一試。

let jsonObj: [String: AnyObject] = [ 
    "email_address" : "[email protected]" as AnyObject, 
    "status" : "subscribed" as AnyObject, 
] 
+0

看起來我犯了錯字。但無論如何結果是一樣的。 – MOzeb

+0

你試過[這個答案](http://stackoverflow.com/a/20827392/4632218)? –

0

既然你得到一個的JSONParseError,你的問題涉及到了您要發送的參數格式。

嘗試encoding: JSONEncoding.default而不是encoding: URLEncoding.default