如何从 100 个不同但相似的 URL 中获取 JSON 数据
How to get JSON data from 100 different but similar URL
所以我要请求的 API 的网站每个请求只能处理 50 个项目(我需要整个数据,顺便说一下,这是 5001)有没有办法制作 URL 带有特殊字符,可以从 101 个不同(但相似)URL? (差异在每个 URL 的后面,需要更改跳过号,仅此而已)(它说无法将 '(String: Int)' 的值编译为预期的参数类型 String
func fetchDataForNearbyStops(completionHandler : ([Nearby]?, String?) -> ()){
let requestURLStr = "http://datamall2.mytransport.sg/ltaodataservice/BusStops?$skip="
let requestURL = NSURL(string: requestURLStr)
let reqNum : Int = 0
let reqURLStr = requestURLStr + (String: reqNum)
let request : NSMutableURLRequest = NSMutableURLRequest()
request.URL = reqURL
request.HTTPMethod = Cara
request.addValue(AccKey, forHTTPHeaderField: AccKeyField)
request.addValue(UniqueUID, forHTTPHeaderField: UniqueUIDField)
request.addValue(CustomHeader, forHTTPHeaderField: CustomHeaderField)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in
print(NSString(data: data!, encoding: NSUTF8StringEncoding))
do {
if let JSONDataArray = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? [AnyObject] {
print(JSONDataArray)
}
} catch {
}
}
task.resume()
NSOperationQueue.mainQueue().addOperationWithBlock { () -> Void in
completionHandler(nil, nil)
}
}
你的代码很接近,你基本上只是把括号放错了地方...
let requestURLStr = "datamall2.mytransport.sg/ltaodataservice/BusStops?$skip=";
let reqNum : Int = 0
let reqURLStr = requestURLStr + String(reqNum)
您需要使用该号码创建一个 String
实例。然后您应该使用 2 个函数,一个用于控制请求多少页,一个用于发送请求:
func sendRequests() {
for page in 0...10 {
sendPageRequest(page)
}
}
func sendPageRequest(page: Int) {
let requestURLStr = "datamall2.mytransport.sg/ltaodataservice/BusStops?$skip=";
let reqURLStr = requestURLStr + String(page)
...
所以我要请求的 API 的网站每个请求只能处理 50 个项目(我需要整个数据,顺便说一下,这是 5001)有没有办法制作 URL 带有特殊字符,可以从 101 个不同(但相似)URL? (差异在每个 URL 的后面,需要更改跳过号,仅此而已)(它说无法将 '(String: Int)' 的值编译为预期的参数类型 String
func fetchDataForNearbyStops(completionHandler : ([Nearby]?, String?) -> ()){
let requestURLStr = "http://datamall2.mytransport.sg/ltaodataservice/BusStops?$skip="
let requestURL = NSURL(string: requestURLStr)
let reqNum : Int = 0
let reqURLStr = requestURLStr + (String: reqNum)
let request : NSMutableURLRequest = NSMutableURLRequest()
request.URL = reqURL
request.HTTPMethod = Cara
request.addValue(AccKey, forHTTPHeaderField: AccKeyField)
request.addValue(UniqueUID, forHTTPHeaderField: UniqueUIDField)
request.addValue(CustomHeader, forHTTPHeaderField: CustomHeaderField)
let task = NSURLSession.sharedSession().dataTaskWithRequest(request) { (data, response, error) in
print(NSString(data: data!, encoding: NSUTF8StringEncoding))
do {
if let JSONDataArray = try NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers) as? [AnyObject] {
print(JSONDataArray)
}
} catch {
}
}
task.resume()
NSOperationQueue.mainQueue().addOperationWithBlock { () -> Void in
completionHandler(nil, nil)
}
}
你的代码很接近,你基本上只是把括号放错了地方...
let requestURLStr = "datamall2.mytransport.sg/ltaodataservice/BusStops?$skip=";
let reqNum : Int = 0
let reqURLStr = requestURLStr + String(reqNum)
您需要使用该号码创建一个 String
实例。然后您应该使用 2 个函数,一个用于控制请求多少页,一个用于发送请求:
func sendRequests() {
for page in 0...10 {
sendPageRequest(page)
}
}
func sendPageRequest(page: Int) {
let requestURLStr = "datamall2.mytransport.sg/ltaodataservice/BusStops?$skip=";
let reqURLStr = requestURLStr + String(page)
...