2017-03-01 43 views
1

我正在使用TRON框架進行swift,並且由於我的網址而出現錯誤。 這是代碼:TRON url問題swift

let relatedTronUrl = TRON(baseURL: "https://api.themoviedb.org") 

func fetchRelatedFeed(id: Int, completion: @escaping() ->()){ 
    let request: APIRequest<Related, JSONError> = relatedTronUrl.request("/3/tv/1402/similar?api_key=myAPIkey&language=en-US&page=1") 

    request.perform(withSuccess: { (related) in 
     print("Successfully fatched our json objects") 
     completion() 
    }) { (err) in 
     print("Failed to fetch json ",err) 
    } 
} 

正如你可以看到正確的URL應該是:https://api.themoviedb.org/3/tv/1402/similar?api_key=myAPIkey&language=en-US&page=1 但是當我運行我的應用程序,我得到一個JSON錯誤:

Failed to fetch json APIError<JSONError>(request: Optional(https://api.themoviedb.org/3/tv/1402/similar%3Fapi_key=myAPIkey&language=en-US&page=1), response: Optional(<NSHTTPURLResponse: 0x610000235f20> { URL: https://api.themoviedb.org/3/tv/1402/similar%3Fapi_key=myAPIkey&language=en-US&page=1 } { status code: 401, headers { 
"Access-Control-Allow-Origin" = "*"; 
Connection = "keep-alive"; 
"Content-Length" = 86; 
"Content-Type" = "application/json;charset=utf-8"; 
Date = "Wed, 01 Mar 2017 16:58:38 GMT"; 
Server = openresty; 
Status = "401 Unauthorized"; 
"X-RateLimit-Limit" = 40; 
"X-RateLimit-Remaining" = 39; 
"X-RateLimit-Reset" = 1488387528;} }), data: Optional(86 bytes), error: Optional(Alamofire.AFError.responseValidationFailed(Alamofire.AFError.ResponseValidationFailureReason.unacceptableStatusCode(401))), errorModel: Optional(BookFinde.RelatedService.JSONError)) 

我覺得這個問題是由於TRON的要求,因爲正確的網址是:https://api.themoviedb.org/3/tv/1402/similar?api_key=myAPIkey&language=en-US&page=1
但我得到的是:https://api.themoviedb.org/3/tv/1402/similar%3Fapi_key=myAPIkey&language=en-US&page=1
正如你可以看到不同的是?轉換爲%3F。 我在做什麼錯?

+1

TRON顯然期待的請求參數是一個'path'和你要包括'query'參數。檢查'APIRequest'類,看看它是否允許你指定查詢參數,然後將你的調用拆分爲只用路徑部分創建請求,然後添加查詢部分。 –

+0

@DavidBerry謝謝你,我不得不通過添加參數來添加查詢。 –

+0

您可能會發布您的實際解決方案作爲未來參考的答案。 –

回答

3

這是我找到了解決辦法:

let relatedTronUrl = TRON(baseURL: "https://api.themoviedb.org") 

func fetchRelatedFeed(id: Int, completion: @escaping() ->()){ 
    let request: APIRequest<Related, JSONError> = relatedTronUrl.request("3/tv/\(id)/similar") 

    // I had to manually add the paramaters in this way 
    request.parameters = ["api_key":"myAPIkey","language":"en-US","page":"1"] 

    request.perform(withSuccess: { (related) in 
     print("Successfully fatched our json objects") 
     completion() 
    }) { (err) in 
     print("Failed to fetch json ",err) 
    } 
} 
+0

不要忘記接受你的答案;) –

+0

你是否也需要添加方法呢?像request.method = .get –

+0

明天我可以接受我的答案。 @MatGrlt它可以在不添加方法.get的情況下工作 –