Alamofire Mailchimp API 3.0订阅

时间:2016-12-20 07:45:48

标签: json swift3 alamofire mailchimp mailchimp-api-v3.0

我正在尝试使用Alamofire订阅新用户到Mailchimp列表。 当我尝试使用.post方法和JSONObject作为参数订阅新用户时,问题就开始了:

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" : "testMailAddress@gmail.com" 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文档中:

的JSONParseError

我们遇到了未指定的JSON解析错误。 此错误表示您的JSON格式不正确或被视为无效或不完整。

如你所见,我正在检查我的jsonObj是否有效。所以我没有得到这个解析错误..

在Mailchimp API 3.0中,只需要发送电子邮件地址和状态字段来订阅新邮件。

如果我尝试使用带有已订阅的邮件地址的.get方法向Alamofire发送请求,一切正常,我可以从Mailchimp接收所有数据。

我的jsonObj确实存在问题,还是在其他地方?

2 个答案:

答案 0 :(得分:0)

从&#39; mail_address&#39;更改对象键到&#39; email_address&#39;并尝试一下。

let jsonObj: [String: AnyObject] = [
    "email_address" : "testMailAddress@gmail.com" as AnyObject,
    "status" : "subscribed" as AnyObject,
]

答案 1 :(得分:0)

由于您收到 JSONParseError ,因此您的问题与您发送参数的格式有关。

尝试使用encoding: JSONEncoding.default代替encoding: URLEncoding.default