问题与HTTP.Body参数 - 斯威夫特
问题描述:
我有这个代码,我需要通过BUDDY传递参数,但我得到一个“罕见”的错误。有谁能够帮助我?谢谢!!问题与HTTP.Body参数 - 斯威夫特
这是错误
可选(错误域= NSURLErrorDomain代码= -1017 “不能分析响应” 的UserInfo = {NSUnderlyingError = 0x7fda33f4cd80 {错误域= kCFErrorDomainCFNetwork代码= -1017“( null)“UserInfo = {_ kCFStreamErrorCodeKey = -1,_kCFStreamErrorDomainKey = 4}},NSErrorFailingURLStringKey = http:.../users.php,NSErrorFailingURLKey = http:.../users.php,_kCFStreamErrorDomainKey = 4,_kCFStreamErrorCodeKey = NSLocalizedDescription =无法解析响应})
func registerUser(currentUser: Users, IsRegistered : (isRegistered: Bool, messageString: String) ->()) {
let REGISTER_URL = "users.php?"
var bodyParams: Dictionary<String, String> = Dictionary()
bodyParams["firstName"] = currentUser.getFirstName()
bodyParams["lastName"] = currentUser.getLastName()
bodyParams["gender"] = currentUser.getGender()
bodyParams["birthday"] = currentUser.getBirthday()
let urlAppend = createFullURL(REGISTER_URL, urlParams: Dictionary())
let request = NSMutableURLRequest(URL: NSURL(string: urlAppend)!)
let loginString = "\(currentUser.getEmail()):\(currentUser.getPassword())"
let loginData: NSData = loginString.dataUsingEncoding(NSUTF8StringEncoding)!
let base64LoginString = "Basic \(loginData.base64EncodedStringWithOptions(.Encoding64CharacterLineLength))"
let headerParams: Dictionary<String, String> = ["Authorization": base64LoginString]
for (key, value) in headerParams{
request.setValue(value, forHTTPHeaderField: key)
}
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("application/json", forHTTPHeaderField: "Accept")
//
// The problem is the following 4 lines, if I tell, there is no error, but of course, I can not register a user
//
do {
request.HTTPBody = try NSJSONSerialization.dataWithJSONObject(bodyParams, options: [])
} catch {
IsRegistered(isRegistered: false, messageString: "Error al parsear los datos.")
}
request.HTTPMethod = METHOD_GET
NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in
if (error != nil) {
// ERROR HERE //
// ERROR HERE //
// ERROR HERE //
print(error)
} else {
...
}
}.resume()
}
答
检查此链接HTTPBody
httpBody
此数据被发送作为请求的消息体中,如在HTTP POST请求来完成。
当您使用request.HTTPMethod = "GET"
,则不能使用HTTPBody
追加你&k=v
双。 将参数添加到URL字符串。
链接已损坏。 -1分。 – mxcl
@mxcl链接正在为我工作,任何方式我会解决它。 – wajeeh
事实上,再次运作,减去一个未完成!...但是,链接的半衰期为3小时(!),所以复制和粘贴提供链接作为引用总是更好。 IMO。不只是MO。 – mxcl