带有URL内容的字符串?

所以在我下载最近的更新之前,以下代码对我有用:

var g_home_url = String.stringWithContentsOfURL(NSURL(string: url_string), encoding: NSUTF8StringEncoding, error: nil) // Gives me an error: "String.Type does not have a member names stringWithContentsOfUrl" 

我很困惑。 在swift中采用以下Objective-c方法的正确方法是什么?

 NSString * g_home_url = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:home_url] encoding:NSUTF8StringEncoding error:nil]; 

使用-initWithContentsOfURL:encoding:error: instance方法而不是+stringWithContentsOfURL:encoding:error: class convenience initializer。

 var g_home_url = String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding, error: nil) 

我不知道类似的方便初始化器现在是否在Swift中不受支持,但它有意义,因为它们只是alloc-init样板的缩写,在Swift中不存在。

对于Swift 3,你必须使用String(contentsOf:encoding:) 。 它抛出。

 do { var content = try String(contentsOf:URL(string: "http://your-URI-here")!) } catch let error { // Error handling } 

这对我有用:(没有更多错误参数)

 var g_home_url = try! String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding) 

或者如果你想处理错误:

 do { var g_home_url = try String(contentsOfURL: NSURL(string: url_string)!, encoding: NSUTF8StringEncoding) } catch { print(error) } 

对于Swift 4,他们改变了字符串编码。 所以现在它会,

 do { var g_home_url = try String(contentsOfURL: URL.init(string: url_string)!, encoding: String.Encoding.utf8) } catch { print(error) } 

此时(Swift 4.1.2)从Ubuntu linux发送HTTP-get请求的唯一方法是: https : //github.com/dmcyk/SwiftyCurl

 import Foundation import SwiftyCurl var request = cURLRequest(url: URL(string: "https://path.to/url/")!, method: .get) let connection = cURLConnection(useSSL: true) do { let res = try connection.request(request) if let body: String = res.body() { print(body) } } catch { prin(error) }