2015-11-03 135 views
0

我有這個代碼,我需要通過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() 

} 

回答

0

檢查此鏈接HTTPBody

httpBody

此數據被髮送作爲請求的消息體中,如在HTTP POST請求來完成。

當您使用request.HTTPMethod = "GET",則不能使用HTTPBody追加你&k=v雙。 將參數添加到URL字符串。

+0

鏈接已損壞。 -1分。 – mxcl

+0

@mxcl鏈接正在爲我工​​作,任何方式我會解決它。 – wajeeh

+0

事實上,再次運作,減去一個未完成!...但是,鏈接的半衰期爲3小時(!),所以複製和粘貼提供鏈接作爲引用總是更好。 IMO。不只是MO。 – mxcl