NSURLSession.sharedSession()。dataTaskWithRequest不起作用

时间:2016-09-04 03:04:25

标签: ios swift nsurlsession nsurlsessiondatatask

我现在正在开发一个小应用程序,我需要连接到某些网站以获取一些信息。

这是我所做的功能,它在90%的时间内满足了我的需求。

func requestFunctionOn(url: String) {
    print(#function + " url: \(url)")
    let request = NSMutableURLRequest(URL: NSURL(string: url)!)
    request.HTTPMethod = "POST"

    NSURLSession.sharedSession().dataTaskWithRequest(request,
                                                     completionHandler: {
                                                        data, response, error in

                                                        if error != nil {
                                                            print("error=\(error)")
                                                            return
                                                        }

                                                        print("RSC = \((response as! NSHTTPURLResponse).statusCode)")
                                                        ............. doing some more useful work .............
                                                     }).resume()
}

有时我遇到了问题,但我不知道为什么。例如,下面是工作案例(RSC = 200)和非工作案例(RSC = 404)的调试器控制台中的跟踪:

按预期工作:

requestFunctionOn url: http://abcnews.go.com
RSC = 200
(lldb) 

未按预期工作:

requestFunctionOn url: http://www.bloomberg.com/asia
RSC = 404
(lldb) 

如果第二种情况有效,我该怎么办?我需要在哪里查看?

1 个答案:

答案 0 :(得分:0)

两个问题:

  • 您需要设置Content-Type标头以指示POST请求正文的内容,其中Swift等效于:

    [request addValue:@"text/plain" forHTTPHeaderField:@"Content-Type"];
    
  • 您需要设置请求正文:

    request.HTTPBody = [NSData data];
    

为Objective-C片段道歉,但我认为应该足够接近,以便能够找出等效的Swift代码。 : - )