我正在尝试在JSON中使用Alamofire进行GET。 当我使用一个URL - 它工作正常,当我使用另一个时,我得到一个错误解开一个可选值。我似乎无法追踪错误的来源。我已经将代码放在ViewDidLoad中来跟踪错误。我不知道它是否是收件人,他们想要某种授权。但我知道它不是println的cos当我//他们 - 它仍然出现错误,继承代码:
request(.GET, "https://api.doingdata.net/sms/send?api_service_key='APIKey'&msg_senderid=Edify-FYI&msg_to=&msg_text={otp|Edify-FYI|3600|ETEN|4} &msg_clientref=abcdef123456&msg_dr=0&output=json")
.validate()
.responseJSON { (_, _, _, error) in
println(error)
}
但我使用:
request(.GET, "http://httpbin.org/")
.validate()
.responseJSON { (_, _, _, error) in
println(error)
}
它工作正常并返回错误的nil。
任何帮助都会很棒,因为它让我疯狂。
答案 0 :(得分:25)
原因很简单:您的网址包含特殊字符。所以,如果你这样做
let url = NSURL(string:yourURLString) //returns nil
它将返回零。您需要将URL格式化为适合发出请求。这是一个适合您的解决方案。
var urlString = "https://api.doingdata.net/sms/send?api_service_key='APIKey'&msg_senderid=Edify-FYI&msg_to=&msg_text={otp|Edify-FYI|3600|ETEN|4} &msg_clientref=abcdef123456&msg_dr=0&output=json"
urlString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())!
request(.GET, urlString, parameters: nil, encoding: .JSON)