Moyaでlivedoor天気予報のAPIにアクセスしてjsonを取得したいと考えています。
qiitaの記事やブログ記事を参考に実装してみたのですが、アクセスに失敗してしまいます。
コード
Moyaのenum宣言部分では東京と大阪の2ヶ所を設定しています。
Swift
1import Moya 2 3enum TenkiAPI { 4 case tokyo 5 case osaka 6} 7extension TenkiAPI: TargetType { 8 9 10 var baseURL:URL { 11 return URL(string:"http://weather.livedoor.com/forecast/webservice/json/v1")! 12 } 13 var path: String { 14 switch self { 15 case .tokyo: return "?city=130010" 16 case .osaka: return "?city=270000" 17 } 18 } 19 20 var method: Moya.Method { 21 switch self { 22 case .tokyo, .osaka: 23 return .get 24 } 25 } 26 27 //テストの際に使うメソッド 28 var sampleData: Data { 29 return Data() 30 } 31 32 var task: Task { 33 switch self { 34 case .osaka, .tokyo: 35 return .requestPlain 36 } 37 } 38 39 var headers: [String : String]? { 40 return nil 41 } 42 43}
viewDidLoadでAPIへのアクセスを試みたのですが失敗して.failureに飛んでしまいます。
Swift
1 override func viewDidLoad() { 2 super.viewDidLoad() 3 let provider = MoyaProvider<TenkiAPI>() 4 provider.request(.tokyo) { result in 5 switch result { 6 case let .success(moyaResponse): 7 do { 8 try moyaResponse.filterSuccessfulStatusCodes() 9 let data = try moyaResponse.mapJSON() 10 // do something with the data 11 } 12 catch { 13 print("json parse失敗") 14 } 15 case let .failure(error): 16 print("アクセスに失敗しました:(error)") 17 break 18 } 19 20 } 21 }
アクセスの方法が間違っているのでしょうか?
回答1件
あなたの回答
tips
プレビュー