ios - XCode swift HTTPS : String(data: data! 编码:NSUTF8StringEncoding ) 返回 nil

标签 ios swift xcode https character-encoding

我正在从 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/

相关文章:

ios - 保存后如何直接获取对象的NSManagedObjectID?

ios - UIRefreshControl默认添加奇怪的插图

ios - 将 slider 分配给水平分页(如 Instagram) - UISlider 到 UIScrollView

ios - 显示网络图像是使用 NSAllowsArbitraryLoads 的正当借口?

ios - 应用被拒绝 : Systematic way to find (cocoapod) library that accesses privacy-sensitive data

ios - 我的导航栏的色调会自动改变

objective-c - swift : Alternative to . classForCoder()

ios - 根据计数列表过滤 Realm 对象<t>

ios - UICollectionViewDelegate 中的 Swift 3 警告

ios - 使用 Cocoapods 更新后找不到 Parse/Parse.h 文件