如何在swift中正确添加http标题“Connection:close”?

时间:2016-02-16 19:37:34

标签: ios xcode swift http

我有一个快速的应用程序。它将http请求发送到我无法访问的服务器。

当应用程序在后台停留一段时间后,我返回并尝试向服务器发送请求时出现http错误“连接丢失”。

我读了这个post

我想添加连接:关闭标题和值,如建议的那样。

我试过这段代码:

func taskForGETMethod(method: String, pathParameters: [String], parameters: [String : AnyObject], completionHandler: (result: AnyObject!, error: NSError?) -> Void) -> NSURLSessionDataTask {

    /* 1. Build the URL and configure the request */
    let urlString = Constants.BaseURLSecure + method + HttpClient.escapedPath(pathParameters) + HttpClient.escapedParameters(parameters)
    let url = NSURL(string: urlString)!
    let request = NSURLRequest(URL: url)
    request.setValue("Connection", forKey: "close")

但是我的所有请求现在都失败了。如何正确添加标题?

2 个答案:

答案 0 :(得分:0)

如果您想操纵http标头值,则需要使用NSMutableURLRequest和以下API

func setValue(_ value: String?, forHTTPHeaderField field: String)

喜欢这样

let url = NSURL(string: "http://yo", relativeToURL: nil)
let req = NSMutableURLRequest(URL: url!)
req.setValue("close", forHTTPHeaderField: "Connection")

Swift 3

let url = URL(string: "http://yo", relativeTo: nil)
let req = NSMutableURLRequest(url: url! )
req.setValue("close", forHTTPHeaderField: "Connection")

答案 1 :(得分:0)

问题出在

request.setValue("Connection", forKey: "close")

键是标题的标题,应为“ Connection”,其值应为“ close”。简而言之,目前您设置的是 close =连接 ,而不是 Connection = close

您需要将行更改为

request.setValue("close", forKey: "Connection")