Kar*_*var 15 string nshttpurlresponse swift xcode6
我想将我的响应从NSHTTPURLResponse类型转换为String:
let task = session.dataTaskWithRequest(request, completionHandler: {(data, response, error) -> Void in
println("Response: \(response)")
var responseText: String = String(data: response, encoding: NSUTF8StringEncoding)
})
Run Code Online (Sandbox Code Playgroud)
下面的行将响应消息输出到控制台.
println("Response: \(response)")
Run Code Online (Sandbox Code Playgroud)
但这一行给我一个错误:Call中的额外参数'encoding'.
var responseText: String = String(data: response, encoding: NSUTF8StringEncoding)
Run Code Online (Sandbox Code Playgroud)
如何成功将此"响应"转换为字符串?
Dai*_*jan 31
如果你愿意,抓住数据并使其成为字符串.响应的描述不是响应主体
let responseData = String(data: data, encoding: NSUTF8StringEncoding)
Run Code Online (Sandbox Code Playgroud)
如果你想要一个HEADER FIELD:
let httpResponse = response as NSHTTPURLResponse
let field = httpResponse.allHeaderFields["NAME_OF_FIELD"]
Run Code Online (Sandbox Code Playgroud)
更新答案:
事实证明,您希望获得标题字段的内容.
if let httpResponse = response as? NSHTTPURLResponse {
if let sessionID = httpResponse.allHeaderFields["JSESSIONID"] as? String {
// use sessionID
}
}
Run Code Online (Sandbox Code Playgroud)
打印对象时,description
会调用其方法.
这就是为什么当你println()
得到一个文本表示.
有两种方法可以达到你想要的效果.
简单的方法
let responseText = response.description
Run Code Online (Sandbox Code Playgroud)但是,这只适用于调试.
本地化的方式
let localizedResponse = NSHTTPURLResponse.localizedStringForStatusCode(response.statusCode)
Run Code Online (Sandbox Code Playgroud)需要向用户显示错误时,请使用第二种方法.
归档时间: |
|
查看次数: |
25729 次 |
最近记录: |