我正在尝试获取网页的最后修改日期并尝试使用以下代码。但它总是在控制台中返回“Optional([:])”(空):
let url = URL(string:"http://www.carl-bechstein-gymnasium.de/news/news_index.htm")
let req = NSMutableURLRequest(url: url!, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)
req.httpMethod = "GET"
let headerFields = req.allHTTPHeaderFields
print(headerFields)
我还将此页面添加到Info.plist:
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>http://www.carl-bechstein-gymnasium.de/</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
但它不起作用。
所以我试着检查一下,如果有任何标题,那就有了!这里是website的摘录,在那里我查了一下:
日期:·星期四,·26··月·2017年20:15:42·GMT(CR)(LF) 内容类型:·为text / html(CR)(LF) 内容长度:·36519(CR)(LF) 连接:·关闭(CR)(LF) 服务器:Apache的·(CR)(LF) 最后修改:·星期三,·18··月·2017年15:17:42·GMT(CR)(LF)
现在我很困惑,很快希望得到帮助......
答案 0 :(得分:5)
您是否正在尝试获取请求或网站响应的标头?现在,您正在获取请求的所有标题,并且由于您没有任何标题,因此它将为空。
如果您正在尝试获取响应标头,则可以通过URLResponse
将其转换为HTTPURLResponse
数据任务中返回的URLSession
对象来获取响应标头,例如这样:
URLSession.shared.dataTask(with: req) { data, response, error in
if let httpResponse = response as? HTTPURLResponse {
print(httpResponse.allHeaderFields)
}
}.resume()
答案 1 :(得分:4)
req.allHTTPHeaderFields
是您的请求的标头,而不是响应的标头。您实际上没有在此代码中发送请求,您只配置了一个要发送的请求。