我从HTTPS页面检索HTML内容,但对于“简短”内容,我确实正确地得到它。对于“长”的内容,我得到了一个零的答案。XCode swift HTTPS:String(data:data !, encoding:NSUTF8StringEncoding)return nil
我不知道内容长度是否与它有关。
如果找不到报告,我的页面可能会返回一个HTML格式的报表(带有几行的小表格)或“错误”消息。
当错误消息被返回时,它“运行良好” - >我得到了HTML响应,但是当它找到报告时,我得到了一个零的答案。
该报告在HTML浏览器中正常工作。我查了apache日志,答案内容有正确的长度,但Xcode没有答案。
我已经检查了在互联网上发现的“HTTPS nil request”问题。 HTTPS不是问题。代码工作时无需将“允许任意负载”设置为true或添加“例外域”。启用这些选项不能解决问题。
我不知道什么可能会导致这个零请求,而服务器发送它。
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))
我显然是同一个Apache设置,测试了3台服务器和完全相同的Web服务器代码。一方面它工作得很好,另一方面不行。像往常一样,工作的人是我不需要使用的人。
我在www.htbridge.com/ssl上检查了SSL证书安装(以防万一)并获得了A +等级。
可能的复制http://stackoverflow.com/questions/32050969/why-my-return-is-nil-but-if-i-按最网址,在铬野生动物园,我可任意获取数据。 - 就你而言,服务器在“charset = ISO-8859-1”响应中发送编码,因此自动检测的机会很大:http://stackoverflow.com/a/32051684/1187415。 –