如何在NSMutableURLRequest中添加类似于?id=1的内容

7
我想展示此URL的数据:http://www.football-data.org/soccerseasons/351/fixtures?timeFrame=n14 我的baseURL是let baseUrl = NSURL(string: "http://www.football-data.org")!
所以我的请求是let request = NSMutableURLRequest(URL: baseUrl.URLByAppendingPathComponent("soccerseasons/" + "\(league.id)" + "/fixtures?timeFrame=n14"))
但是,?timeFrame=n14并不起作用。
有人知道如何解决这个问题,让我能够显示这个数据吗?
1个回答

17

问题在于?timeFrame=n14中的问号被视为URL路径的一部分,因此被HTML转义为%3F。以下应该可以解决这个问题:

let baseUrl = NSURL(string: "http://www.football-data.org")!
let url = NSURL(string: "soccerseasons/" + "\(league.id)" + "/fixtures?timeFrame=n14", relativeToURL:baseUrl)!
let request = NSMutableURLRequest(URL: url)

或者,您可以使用NSURLComponents,它允许您从各个组件逐步构建URL(出于简洁起见省略了错误检查):

let urlComponents = NSURLComponents(string: "http://www.football-data.org")!
urlComponents.path = "/soccerseasons/" + "\(league.id)" + "/fixtures"
urlComponents.query = "timeFrame=n14"

let url = urlComponents.URL!
let request = NSMutableURLRequest(URL: url)

Swift 3 更新:

var urlComponents = URLComponents(string: "http://www.football-data.org")!
urlComponents.path = "/soccerseasons/" + "\(league.id)" + "/fixtures"
urlComponents.query = "timeFrame=n14"

let url = urlComponents.url!
var request = URLRequest(url: url)

是的,那就是答案。非常感谢! - STheFox
谢谢Martin,这太棒了。 - Zack Shapiro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接