我正在从HTTPS页面检索HTML内容,但对于“短”内容,我确实得到了它。对于“长”的内容,我得到一个零答案。
我不知道内容长度是否与它有关。
我的页面要么以HTML格式返回一个报告(一个包含几行的小表格),要么在找不到报告时返回“错误”消息。
当返回错误消息时,它“运行良好” - >我得到了HTML回复,但是当它找到报告时,我得到了一个零答案。
该报告在HTML浏览器中运行良好。我检查了apache日志,答案内容的长度正确,但是Xcode得到了一个零答案。
我已经检查过在互联网上发现的“HTTPS无需求”问题。 HTTPS不是问题。代码正在运行,无需将“允许任意加载”设置为true或添加“异常域”。启用这些选项无法解决问题。
我不知道在服务器发送时可能导致此nil请求的原因。
let curUsuario=curTuc.nombre
let urlString = "https://xxxxxx.yyyyy.com/PatientLabDetails5?usuario=\(curUsuario)&pin=\(curnoPin)"
let url = NSURL(string: urlString)
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {
(data, response, error) in
print("response: \(response)")
print("Data: \(data?.length)")
....
};
task.resume()
调试:
response: Optional(<NSHTTPURLResponse: 0x7aea3f30> { URL: https://xxxx.yyyy.com/PatientLabDetails5?usuario=25808&pin=4884938 } { status code: 200, headers {
Connection = "Keep-Alive";
"Content-Type" = "text/html;charset=ISO-8859-1";
Date = "Tue, 01 Nov 2016 14:07:29 GMT";
"Keep-Alive" = "timeout=15, max=100";
Server = Apache;
"Set-Cookie" = "JSESSIONID=2A38EC49C93927A34AA1C9ED16B5F997; Path=/; Secure; HttpOnly";
"Transfer-Encoding" = Identity;
"X-Content-Type-Options" = nosniff;
"X-Frame-Options" = SAMEORIGIN;
"X-XSS-Protection" = "1; mode=block";
} })
Data: 6015
但是当我尝试获取数据时,我得到了一个零结果..
print(String(data: data!, encoding: NSUTF8StringEncoding ))
我在3台服务器上测试了它,显然具有相同的apache设置和完全相同的Web服务器代码。一方面它运作良好,另一方面没有。像往常一样,工作的是我不需要使用的那个。
我检查了www.htbridge.com/ssl上的SSL证书安装(以防万一)并获得了A +等级。
答案 0 :(得分:1)
在我的代码中通常会退回:
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
if (strData == nil){
//roll back to ASCII ...
strData = NSString(data: data, encoding: NSASCIIStringEncoding)
}
答案 1 :(得分:0)
我终于明白了!
感谢AlejandroAvilàn就String(data: data, encoding: NSUTF8StringEncoding) return nil问题提出的意见,我将NSUTF8StringEncoding
替换为NSASCIIStringEncoding
,我的问题现已解决。