2017-07-24 67 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