2017-07-24 68 views
0

我目前使用SwiftHTTP获取url地址的源代码。我使用“get方法”为获得这无法从Swift中获取网页源代码

do { 
      let opt = try HTTP.GET(self.my_url_address!) 
      opt.start { response in 
       if let err = response.error { 
        print("error: \(err.localizedDescription)") 
        return 
       } 
       print(response.description) 
      } 
     } catch let error { 
      print("got an error creating the request: \(error)") 
     } 

这个代码运行后URL地址的源代码,我在Xcode输出屏幕此输出

URL: http://myweburl.com/detay/swat-under-siege.html 

Status Code: 200 

Headers: Content-Type: text/html 
Connection: keep-alive 
CF-RAY: 38391215a60e2726-FRA 
Set-Cookie: ASPSESSIONIDSABBBSDT=HPKKPJGCDLKMDMILNGHPCAGD; path=/ 
Date: Mon, 24 Jul 2017 18:51:24 GMT 
Vary: Accept-Encoding 
X-Powered-By: ASP.NET Transfer-Encoding: Identity 
Server: cloudflare-nginx 
Content-Encoding: gzip 
Cache-Control: private 

的状态代码是200,但输出不是url的源代码。我怎样才能解决这个问题?

+0

说明文档中提到'打印( “数据是:\(response.data)”)'。 – paulvs

+0

的输出是:“数据是:27905字节”。我试着让responseString = String(data:response.data,encoding:.utf8);这是行不通的输出只是“无” – Antiokhos

+0

尝试使用一个普通的旧URLSession,并检查问题是否仍然存在。 – paulvs

回答

1

回应无误。我试着请求的网站(真正的)和它的作品:

print(response.data.base64EncodedString()) 

如果解码BASE64数据,就会呈现有效的HTML代码。

该问题似乎与编码有关。检查网站的head标签后,它指出,字符集是windows-1254

String(data: response.data, encoding: .windowsCP1254) // works. latin1, etc. 

您的问题类似于SWIFT: NSURLSession convert data to String

+0

字符串(数据:response.data,编码:.windowsCP1254)是答案!非常感谢你! – Antiokhos