我正在尝试使用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
We encountered an unspecified JSON parsing error. This error means that your JSON was formatted incorrectly or was considered invalid or incomplete.
如你所见,我正在检查我的jsonObj是否有效 . 所以我没有得到这个解析错误..
在Mailchimp API 3.0中,它只需要email_address和状态字段来订阅新邮件 .
如果我尝试使用.get方法使用已经订阅的一些邮件地址向Alamofire发送请求,一切正常,我可以从Mailchimp接收所有数据 .
我的jsonObj真的有问题还是在其他地方?
2 回答
由于您收到了JSONParseError,因此您的问题与您发送参数的格式有关 .
试试
encoding: JSONEncoding.default
而不是encoding: URLEncoding.default
.将对象键从“mail_address”更改为“email_address”并尝试一下 .