【发布时间】:2015-09-24 12:52:57
【问题描述】:
伙计们,我收到了对我进行的 api 调用的响应。它返回整个响应,我将它提供给类似的方法。
completionHandler(response: response, error: nil)
然后通过做
print(response.description)
结果是我得到了标题状态码等。
URL:
removed
Status Code:
200
Headers:
Keep-Alive: timeout=5, max=99
Content-Length: 2423
Server: Apache/2.4.10 (Debian)
SessionID: removed
Content-Type: application/json
Date: Thu, 24 Sep 2015 12:50:14 GMT
Connection: Keep-Alive
Cache-Control: no-cache
Payload:
[{"id":148,"name":"Amsterdam","avatar":"removed","cover":"removed"}]
我最感兴趣的部分是这部分
Payload:
[{"id":148,"name":"Amsterdam","avatar":"removed","cover":"removed"}]
不知何故,我无法提取该 json 对象数组。谁能帮我解决这个问题?
编辑:添加了我接收响应并将其传递的方法
func requestObj(url: Routes, params: Dictionary<String, String>?, completionHandler: (response: Response?, error: NSError?) -> ())
{
self.requestConfig(completionHandler: { () -> () in
if let req = NSMutableURLRequest(urlString: self.config!.api!.baseUrl! + "/v2" + url.rawValue) {
do {
req.addValue(String(self.config!.api!.token!), forHTTPHeaderField: "Token")
req.addValue(String(self.sessionID), forHTTPHeaderField: "SessionID")
let opt = HTTP(req)
opt.start { response in
if let err = response.error {
print("error: \(err.localizedDescription)")
print("opt finished with error info: \(response.description)")
completionHandler(response: nil, error: nil)
}
completionHandler(response: response, error: nil)
//print("data is: \(response.data)") access the response of the data with response.data
}
}
}
}) // request a valid config before doing anything
}
这是用
调用的 adapter.requestObj(APIAdapter.Routes.getMunicipalities, params: nil, completionHandler: {(
response, error) in
if let response = response {
print(response.description)
}
})
【问题讨论】:
-
response的类型是什么?它不包含表示响应正文的属性吗? -
您应该在响应数据变量中获取 JSON 数据。请粘贴更多代码,以便问题变得更清晰。在 NSURLConnection 的情况下,您会在连接委托方法 didReceiveData:. 中获得响应数据
-
@EricD。响应是响应类型。该属性是(我假设)“有效负载:”对吗?
-
我不知道任何
Response类型。是从图书馆来的吗?它是您代码中其他地方的自定义类型吗?它来自哪里? -
啊,是的,对不起,我正在使用github.com/daltoniam/SwiftHTTP 库为我处理 http 请求。 @EricD。它基本上是一个 http 响应