2017-02-10 60 views
-1
var url:String = "http://112.199.178.73:4000/contact" + "?" + ["accessToken": getAppDelegate().applicationData?.accessToken].queryStringWithEncoding(); 

var socketUrl = URL(string: url); 
+0

不要調用'URL(string:)'。使用URLComponents。 – matt

+0

需要在這裏使用'var request = URLRequest(url:url as URL) request.httpMethod =「POST」 request.addValue(「您的訪問令牌」,對於HTTP頭字段:「accessToken」)。你不能將'String'轉換爲'URL',這就是爲什麼你在這裏得到'nil'的原因。 –

+0

thanks @matt。使用URLComponents都很順利。 –

回答

2

不要像這樣手動構建URL和URL字符串。

var components = URLComponents() 
components.scheme = "http" 
components.host = "112.199.178.73" 
components.port = 4000 
components.path = "/contact" 

// I'm assuming accessToken is a string here 
if let accessToken = getAppDelegate().applicationData?.accessToken { 
    components.queryItems = [ 
     URLQueryItem(name: "accessToken", value: accessToken) 
    ] 
} 

guard let url = components.url else { 
    fatalError("Failed to create URL") 
} 

如果你能後的字符串var url:String = "http://112.199.178.73:4000/contact" + "?" + ["accessToken": getAppDelegate().applicationData?.accessToken].queryStringWithEncoding(); 產生,我們可以告訴你到底發生了什麼錯,但我敢打賭,但是["accessToken": getAppDelegate().applicationData?.accessToken].queryStringWithEncoding();是越來越追加到該字符串是要給你一個不正確的URL字符串。

+1

謝謝@andrew您的無瑕答案。 –

+0

很高興能幫到你!如果這對你有用,你可以[接受它](http://meta.stackexchange.com/q/5234/179419)! –

相關問題