2017-10-30 12 views
0

単純な天気アプリケーションを構築していますが、何も複雑ではありません。ユーザーの場所に基づいてOpen Weather MapからJSONを取得するだけです。これは、WOM http://api.openweathermap.org/data/2.5/weather?lat=52.516221&lon=13.408363&appid=e72ca729af228beabd5d20e3b7749713Alamofireは、アプリケーションAPIをURLの末尾ではなく末尾に配置します。

からJSONを取得するための正しいURL構造はしかし、これは私のSWIFTコード/ Alamofireがそう、それはむしろそれの終わりよりも、URLの先頭にapiid=***を置く私にhttp://api.openweathermap.org/data/2.5/weather?appid=e72ca729af228beabd5d20e3b7749713&lat=52.516221&long=13.408363 を与えるものです。

これは私のコードです。

let WEATHER_URL = "http://api.openweathermap.org/data/2.5/weather" 
let APP_ID = "e72ca729af228beabd5d20e3b7749713" 

    func getWeatherData(url: String, parameters : [String : String]) { 
    Alamofire.request(url, method: .get, parameters: parameters).responseJSON { 
     response in 
     if response.result.isSuccess { 
      print ("Everything is fine") 
      print ( Alamofire.request(url, method: .get, parameters: parameters)) 
      let weatherJSON : JSON = JSON(response.result.value!) 

      print (weatherJSON) 
     } 
     else { 
      print ("Error \(String(describing: response.result.error))") 
      self.cityLabel.text = "Connection issues" 
     } 
    } 

} 

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
     let location = locations[locations.count - 1] 
     if location.horizontalAccuracy > 0 { 
      locationManager.stopUpdatingLocation() 

      let latitude = "52.516221" 
      let longitude = "13.408363" 
      let params : [String : String] = ["lat" : latitude, "long" : longitude, "appid" : APP_ID] 

      getWeatherData(url : WEATHER_URL, parameters : params) 
     } 
    } 

答えて

2

REST APIのパラメータの順序は関係ありません。

コードに問題があります。間違ったパラメータ名を渡していますか? longlonである必要があります。どちらもリクエストの上

http://api.openweathermap.org/data/2.5/weather?appid=e72ca729af228beabd5d20e3b7749713&lat=52.516221&lon=13.408363

http://api.openweathermap.org/data/2.5/weather?lat=52.516221&lon=13.408363&appid=e72ca729af228beabd5d20e3b7749713

あなたに同じ結果が得られます。

これを試してください。パラメータ 'long'をlonに変更しました。

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 
    let location = locations[locations.count - 1] 
    if location.horizontalAccuracy > 0 { 
     locationManager.stopUpdatingLocation() 

     let latitude = "52.516221" 
     let longitude = "13.408363" 
     let params : [String : String] = ["lat" : latitude, "lon" : longitude, "appid" : APP_ID] 

     getWeatherData(url : WEATHER_URL, parameters : params) 
    } 
} 
+0

私は今このような小さな問題を見ていない泣きたい、感謝の仲間 – Radu033

関連する問題