我正在尝试使用GET请求从API请求数据。它在浏览器上运行良好,因为我可以看到JSON响应,但当我试图在Android应用程序上使用相同的请求时,我会从响应中得到一条禁止消息,没有JSON对象。我正在为我的GET请求使用改装。使用改装时,我是否正确格式化了请求?这是的URL
http://www.omdbapi.com/?i=tt3896198&apikey=MY_API_KEY
我的ApiService文件
private const val BASE_URL = "http://www.omdbapi.com"
private val retrofit = Retrofit.Builder()
.addConverterFactory(ScalarsConverterFactory.create())
.baseUrl(BASE_URL)
.build()
interface MovieApiService {
@GET("/")
fun getMovieInfo(@Query("i") imdbID: String, @Query("apikey") key: String): Call<String>
}
我的功能
private fun getMovieInfo() {
val apiKey = BuildConfig.API_KEY
MovieApi.retrofitService.getMovieInfo("tt3896198", apiKey).enqueue(
object : Callback<String> {
override fun onResponse(call: Call<String>, response: Response<String>) {
_response.value = response.message()
}
override fun onFailure(call: Call<String>, t: Throwable) {
_response.value = "Failure: ${t.message}"
}
}
)
}
我认为问题是API密钥运行不正常,因此它被禁止进入。以下是我建议您尝试的方法
private const val BASE_URL = "https://omdbapi.com/"
private val retrofit = Retrofit.Builder()
.addConverterFactory(ScalarsConverterFactory.create())
.baseUrl(BASE_URL)
.build()
interface MovieApiService {
@GET("?apikey=your_api_key") // Add your API key directly here
fun getMovieInfo(@Query("i") imdbID: String): Call<String>
}
您的密钥直接附在此处的请求中,我们稍后将添加您的查询。