我想知道为什么我的代码无效。我创建了网址并尝试通过Alamofire获得响应。网址是正确的,它在Postman中提供数据。
代码是:
static func getRepolist(request: URLRequest?,
completion: ([String]) -> ()) {
guard let request = request else { return }
Alamofire.request(request)
.validate()
.responseJSON { (response) in
print(response)
}
}
请求是(在控制台中从po request
获取):
▿ https://api.github.com/search/users?q=srdanrasic
▿ url : Optional<URL>
▿ some : https://api.github.com/search/users?q=srdanrasic
- cachePolicy : 0
- timeoutInterval : 60.0
- mainDocumentURL : nil
- networkServiceType : __ObjC.NSURLRequest.NetworkServiceType
- allowsCellularAccess : true
▿ httpMethod : Optional<String>
- some : "GET"
▿ allHTTPHeaderFields : Optional<Dictionary<String, String>>
- some : 0 elements
- httpBody : nil
- httpBodyStream : nil
- httpShouldHandleCookies : true
- httpShouldUsePipelining : false
为什么它不打印任何东西?它没有完成块。 它只是在日志中告诉我 - 程序以退出代码结束:0。 也许在app完成运行之前没有时间完成请求?
答案 0 :(得分:1)
在获得正确的数据并解析后,您应该自己调用
process->setProgram(app);
process->start();
答案 1 :(得分:1)
以这种方式试试......因为您在正文中收到的数据很可能是json数据所以返回Any
static func getRepolist(request: URLRequest?,
completion: ([Any]) -> ()) {
guard let request = request else { return }
Alamofire.request(request)
.validate()
.responseJSON { (response) in
case.success( _):
print(response.result.value)
let body:Any = response.result.value
completion(body)
case.failure( _):
let errData = response.data
print(String(data: errData!, encoding: String.Encoding.utf8) ?? "NO ERROR DATA")
}
}
答案 2 :(得分:0)
实际上问题是,我使用了命令行工具。所以程序在我获取数据之前终止。通过添加:
轻松解决RunLoop.main.run(until: Date(timeIntervalSinceNow: 15))