Macos 未调用NSURLSession完成块
因此,我提出了这个请求,并且从未调用过完成块 怎么了 此外,我还尝试了一种同步和异步形式,该形式使用Macos 未调用NSURLSession完成块,macos,ios8,nsurlsession,Macos,Ios8,Nsurlsession,因此,我提出了这个请求,并且从未调用过完成块 怎么了 此外,我还尝试了一种同步和异步形式,该形式使用NSURLConnection处理同一请求,效果非常好 编辑: 我尝试将dataTask变量分配给session.dataTaskWithRequest并在之后立即显示它。上面写着这个{suspended}suspended?为什么?所以我试着这样称呼它 var session = NSURLSession.sharedSession() session.dataTaskWithRequest(u
NSURLConnection
处理同一请求,效果非常好
编辑:
我尝试将
dataTask
变量分配给session.dataTaskWithRequest
并在之后立即显示它。上面写着这个{suspended}
suspended?为什么?所以我试着这样称呼它
var session = NSURLSession.sharedSession()
session.dataTaskWithRequest(urlRequest,
completionHandler: {(data: NSData!,
response: NSURLResponse!,
error: NSError!) in
println(data)
println(response)
println(error)
})
它成功了
似乎我必须对默认挂起的会话任务调用
resume()
。您也可以通过以下方式使用它:-
session.dataTaskWithRequest(urlRequest,
completionHandler: {(data: NSData!,
response: NSURLResponse!,
error: NSError!) in
print(data)
print(response)
print(error)
}).resume()
你在使用游乐场吗 如果你是,你应该注意包括:
let url = "api url"
let nsURL = NSURL
let task = NSURLSession.sharedSession().dataTaskWithURL(nsURL) {
(data, response, error) in
// your condition on success and failure
}
task.resume()
为了让操场等待回调在Swift 2.x中是这样的
XCPSetExecutionShouldContinueIndefinitely(continueIndefinitely: true)
这是一个相当独特的情况,但是如果在单元测试中使用URLSession,则需要设置期望值。否则,您的测试用例将结束,并且您的请求似乎永远不会返回。Swift 3.0.1
NSURLSession.sharedSession().dataTaskWithRequest(theRequest) { (data, response , error) in
print(response)
}.resume()
我面临着同样的问题,我用自己的方式解决了它
let expect = expectation(description: "dataTaskWithRequest - completes")
if let url = URL(string: "https://www.google.com/") {
let request = URLRequest(url: url)
URLSession.shared.dataTask(with: request) { ( data, response, error) in
print(data.debugDescription)
print(response.debugDescription)
print(error.debugDescription)
expect.fulfill()
}.resume()
waitForExpectations(timeout: 10, handler: nil)
}
并检查您是否已在
info.plist
中添加了应用程序传输安全设置。这在Swift或Objective C中是相同的;所有NSURLSession任务都以挂起状态启动,必须“恢复”才能将其启动。它是基于C语言的客观语言,但它是我遇到的最好的非苹果类NSURLSession代码示例,因此浏览一下它可能会帮助您找到如何最好地使用它。对我一点帮助都没有:(@SergeVelikanov你尝试了什么?@BlackFlam3,没关系,我现在使用的是AFNetworking,它就像一个charmYou需要导入xCplayde
)。
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * data, NSURLResponse * response, NSError * error) {
if (!error)
{
NSLog(@"Data is %@",data);
NSLog(@"Response is %@",response);
NSLog(@"Error is %@",error);
}
}];
[dataTask resume];