2017-03-01 8 views
1

私はTRONフレームワークをswiftで使用していますが、私のURLのためにエラーが発生しています。 https://api.themoviedb.org/3/tv/1402/similar?api_key=myAPIkey&language=en-US&page=1 が、私は自分のアプリケーションを実行したとき、私はJSONのエラーを取得する:あなたが見ることができるようにTRON url issue 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は次のようになります。 これはコードです

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)) 

私はこの問題が原因だと思います正確なURLは: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
あなたが見ることができるように、?はに変換されています。 私は何が間違っていますか?

+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 –