【发布时间】:2015-04-27 12:10:47
【问题描述】:
我是 Swift 语言的新手。我在这里查看了一些用于快速解析 Json 的问题,但我的问题与其他问题略有不同。 当我写 /cmd=login¶ms{'user':'username','password':'pass'} 它返回正确的数据。如何迅速解决这个问题 我将用户名和密码作为 json 发送到 url 但是 它检索错误,这意味着“格式无效” 请帮我。 这是我尝试过的:
var url:NSURL = NSURL(string: "http://<host>?cmd=login")!
//var session = NSURLSession.sharedSession()
var responseError: NSError?
var request = NSMutableURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalCacheData, timeoutInterval: 5)
// var request:NSMutableURLRequest = NSMutableURLRequest(URL: url)
var response: NSURLResponse?
request.HTTPMethod = "POST"
let jsonString = "params={\"user\":\"username\",\"password\":\"pass\"}"
request.HTTPBody = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion:true)
request.setValue("application/json; charset=UTF-8", forHTTPHeaderField: "Content-Type")
// send the request
NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &responseError)
// look at the response
if let httpResponse = response as? NSHTTPURLResponse {
println("HTTP response: \(httpResponse.statusCode)")
} else {
println("No HTTP response")
}
let task = NSURLSession.sharedSession().dataTaskWithRequest(request){
data, response, error in
if error != nil {
println("error=\(error)")
return
}
println("****response= \(response)")
let responseString = NSString(data: data, encoding: NSUTF8StringEncoding)
println("**** response =\(responseString)")
var err: NSError?
var json = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers , error: &err) as? NSDictionary
}
task.resume()
【问题讨论】:
-
您需要以 JSON 格式发送吗?为什么不发送为 ?user=username&?password=pass ?我建议查看 Alamofire 的 Swift HTTP 请求。 github.com/Alamofire/Alamofire
-
jsonString 不是有效的 json,它需要是
"{\"params\":{\"user\":\"username\",\"password\":\"pass\"}}",除非它不需要是 -
params={'user':'username','password':'pass'} 在浏览器中运行良好
-
我认为您应该使用
GET提出请求。看看我的回答。
标签: ios swift nsurlconnection swifty-json