(Swift) twilio post 请求使用 alamofire 设置属性
(Swift) twilio post request to set attributes using alamofire
我正在尝试使用 Twilio 的 REST Api 和 Alamofire 在创建频道时将某些属性设置为频道 (https://www.twilio.com/docs/api/ip-messaging/rest/channels#action-create)
let parameters : [String : AnyObject] = [
"FriendlyName": "foo",
"UniqueName": "bar",
"Attributes": [
"foo": "bar",
"bar": "foo"
],
"Type": "private"
]
Alamofire.request(.POST, "https://ip-messaging.twilio.com/v1/Services/\(instanceSID)/Channels", parameters: parameters)
.authenticate(user: user, password: password)
.responseJSON { response in
let response = String(response.result.value)
print(response)
}
使用该代码,我收到的回复是创建了一个带有 FriendlyName foo 和 UniqueName bar 的频道,但该频道没有设置属性。
查看 Alamofire github (https://github.com/Alamofire/Alamofire) 我发现有一种方法可以发送带有 JSON 编码参数的 POST 请求。所以我尝试了这个:
let parameters : [String : AnyObject] = [
"FriendlyName": "foo",
"UniqueName": "bar15",
"Attributes": [
"foo": "bar",
"bar": "foo"
],
"Type": "private"
]
Alamofire.request(.POST, "https://ip-messaging.twilio.com/v1/Services/\(instanceSID)/Channels", parameters: parameters, encoding: .JSON)
.authenticate(user: user, password: password)
.responseJSON { response in
let response = String(response.result.value)
print(response)
}
向请求添加 "encoding: .JSON" 时,响应显示不仅未设置属性,而且 FriendlyName 和 UniqueName 也为零,这与之前使用 URL 正确设置它们不同 -编码参数。
我是否在 'parameters' 中设置了错误的属性? Twilio 的文档说属性是 "An optional metadata field you can use to store any data you wish. No processing or validation is done on this field."
帮助将不胜感激:)
我找到了问题的答案。原来我的属性字段格式不正确。
这是对我有用的代码:
let parameters : [String : AnyObject] = [
"FriendlyName": "foo",
"UniqueName": "bar",
"Attributes": "{\"key\":\"value\",\"foo\":\"bar\"}",
"Type": "private"
]
Alamofire.request(.POST, "https://ip-messaging.twilio.com/v1/Services/\(instanceSID)/Channels/", parameters: parameters)
.authenticate(user: user, password: password)
.responseJSON { response in
let response = String(response.result.value)
print(response)
debugPrint(response)
}
希望这对其他人有帮助:)
我正在尝试使用 Twilio 的 REST Api 和 Alamofire 在创建频道时将某些属性设置为频道 (https://www.twilio.com/docs/api/ip-messaging/rest/channels#action-create)
let parameters : [String : AnyObject] = [
"FriendlyName": "foo",
"UniqueName": "bar",
"Attributes": [
"foo": "bar",
"bar": "foo"
],
"Type": "private"
]
Alamofire.request(.POST, "https://ip-messaging.twilio.com/v1/Services/\(instanceSID)/Channels", parameters: parameters)
.authenticate(user: user, password: password)
.responseJSON { response in
let response = String(response.result.value)
print(response)
}
使用该代码,我收到的回复是创建了一个带有 FriendlyName foo 和 UniqueName bar 的频道,但该频道没有设置属性。
查看 Alamofire github (https://github.com/Alamofire/Alamofire) 我发现有一种方法可以发送带有 JSON 编码参数的 POST 请求。所以我尝试了这个:
let parameters : [String : AnyObject] = [
"FriendlyName": "foo",
"UniqueName": "bar15",
"Attributes": [
"foo": "bar",
"bar": "foo"
],
"Type": "private"
]
Alamofire.request(.POST, "https://ip-messaging.twilio.com/v1/Services/\(instanceSID)/Channels", parameters: parameters, encoding: .JSON)
.authenticate(user: user, password: password)
.responseJSON { response in
let response = String(response.result.value)
print(response)
}
向请求添加 "encoding: .JSON" 时,响应显示不仅未设置属性,而且 FriendlyName 和 UniqueName 也为零,这与之前使用 URL 正确设置它们不同 -编码参数。
我是否在 'parameters' 中设置了错误的属性? Twilio 的文档说属性是 "An optional metadata field you can use to store any data you wish. No processing or validation is done on this field."
帮助将不胜感激:)
我找到了问题的答案。原来我的属性字段格式不正确。
这是对我有用的代码:
let parameters : [String : AnyObject] = [
"FriendlyName": "foo",
"UniqueName": "bar",
"Attributes": "{\"key\":\"value\",\"foo\":\"bar\"}",
"Type": "private"
]
Alamofire.request(.POST, "https://ip-messaging.twilio.com/v1/Services/\(instanceSID)/Channels/", parameters: parameters)
.authenticate(user: user, password: password)
.responseJSON { response in
let response = String(response.result.value)
print(response)
debugPrint(response)
}
希望这对其他人有帮助:)