OpenWeatherApi при разработке Android не работает (?)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 OpenWeatherApi при разработке Android не работает (?)

Сообщение Anonymous »

По сути, я пытаюсь создать мобильное приложение, которое отображает погоду (и некоторые другие вещи), но у меня есть некоторые проблемы с API.
Я пробовал очень долго, исправляю это, но ничего не работает.
Каждый раз, когда я запускаю приложение, оно говорит: «Не удалось получить данные» (очевидно, потому что я хотел, чтобы оно напечатало это в случае сбоя), но я не не знаю почему.

Код: Выделить всё

package com.example.firsttry

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.TextView
import com.google.gson.annotations.SerializedName
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.http.GET
import retrofit2.http.Query
import java.text.DateFormat
import java.util.*

class MainActivity : AppCompatActivity() {
var timer = Timer()
lateinit var dateTextView: TextView
lateinit var timeTextView: TextView
lateinit var temperatureTextView: TextView
var temperature:Double = 0.0
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
dateTextView = findViewById(R.id.xml_text_date)
timeTextView = findViewById(R.id.xml_text_time)
temperatureTextView = findViewById(R.id.xml_text_temperature)
val api = WeatherApi()
val call = api.getWeather("126a2ec583e6e38a9cbc5e8144c278c7", "New York City")
call.enqueue(object : Callback {
override fun onResponse(
call: Call,
response: Response
) {
if (response.isSuccessful) {
val weather = response.body()
val temp = weather?.temperature?.temp
if (temp != null) {
val temperature = temp - 273.15
temperatureTextView.text = temperature.toString() + "°C"
} else {
temperatureTextView.text = "Temperature Data not available"
}
// do something with weather data
} else {
temperatureTextView.text = "Error Occurred"// handle error
}
response.body().toString()
}

override fun onFailure(call: Call, t: Throwable) {
temperatureTextView.text = "Failed to fetch data"
t.printStackTrace()
// handle failure
}
})
timer.scheduleAtFixedRate(object : TimerTask() {
override fun run() {
runOnUiThread { updateTime() }
}
}, 0, 1000)
}
fun updateTime() {
val calendar = Calendar.getInstance().time
val dateFormat = DateFormat.getDateInstance(DateFormat.FULL).format(calendar)
val timeFormat = DateFormat.getTimeInstance().format(calendar)
dateTextView.text = dateFormat
timeTextView.text = timeFormat
}
override fun onDestroy() {
super.onDestroy()
timer.cancel()
}}
class WeatherResponse {
@SerializedName("name")
val cityName: String? = null

@SerializedName("main")
val temperature: Temperature? = null
}
class Temperature {
@SerializedName("temp")
val temp: Double? = null
}
class WeatherApi {
private val retrofit = Retrofit.Builder()
.baseUrl("http://api.openweathermap.org/")
.addConverterFactory(GsonConverterFactory.create())
.build()

fun getWeather(apiKey: String, city: String): Call {
val service = retrofit.create(WeatherService::class.java)
return service.getWeather(apiKey, city)
}
}
interface WeatherService {
@GET("data/2.5/weather")
fun getWeather(
@Query("appid") apiKey: String,
@Query("q") city: String
): Call
}
Может ли кто-нибудь найти мои ошибки?

Подробнее здесь: https://stackoverflow.com/questions/752 ... nt-failing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»