我现在正在开发一个小应用程序,我需要连接到某些网站以获取一些信息。
这是我所做的功能,它在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)
如果第二种情况有效,我该怎么办?我需要在哪里查看?
答案 0 :(得分:0)
两个问题:
您需要设置Content-Type标头以指示POST请求正文的内容,其中Swift等效于:
[request addValue:@"text/plain" forHTTPHeaderField:@"Content-Type"];
您需要设置请求正文:
request.HTTPBody = [NSData data];
为Objective-C片段道歉,但我认为应该足够接近,以便能够找出等效的Swift代码。 : - )