我正在从 HTTPS 页面检索 HTML 内容,但对于“短”内容我确实正确获取了它。对于“长”的内容,我得到一个零答案。
我不知道内容长度是否与它有关。
如果未找到报告,我的页面要么返回 HTML 格式的报告(一个包含几行的小表格),要么返回“错误”消息。
返回错误消息时,它“运行良好”--> 我得到了 HTML 响应,但是当它找到报告时,我得到了一个零答案。
该报告在 HTML 浏览器中运行良好。我检查了 apache 日志,答案内容的长度正确,但 Xcode 得到的答案为零。
我已经检查了在 Internet 上找到的许多“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 服务器代码的服务器上对其进行了测试。一方面它运作良好,另一方面 2 则不然。像往常一样,工作的是我不需要使用的那个。
我在 www.htbridge.com/ssl 上检查了 SSL 证书安装(以防万一)并获得了 A+ 等级。
最佳答案
在我的代码中通常会回退:
var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
if (strData == nil){
//roll back to ASCII ...
strData = NSString(data: data, encoding: NSASCIIStringEncoding)
}
关于ios - XCode swift HTTPS : String(data: data! 编码:NSUTF8StringEncoding ) 返回 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40362569/