【发布时间】:2019-08-31 17:31:42
【问题描述】:
我正在整合Napster API!这需要不记名访问令牌和带有内容类型的 json。我正在提供所有信息,但我总是收到 400“错误请求”错误。
这是我的改造课。
object RetrofitClientInstance {
private var retrofit: Retrofit? = null
val retrofitInstance: Retrofit
get() {
if (retrofit == null) {
retrofit = Retrofit.Builder()
.baseUrl(BASE_URL_Secure)
.client(provideOkHttpClient())
.addConverterFactory(GsonConverterFactory.create())
.build()
}
return retrofit!!
}
private fun provideOkHttpClient(): OkHttpClient {
var logging = HttpLoggingInterceptor(object : HttpLoggingInterceptor.Logger {
override fun log(message: String) {
Log.d("qweqwe", message)
}
})
logging.setLevel(HttpLoggingInterceptor.Level.BASIC)
val client = OkHttpClient.Builder()
.addInterceptor(logging)
.addNetworkInterceptor(
object : Interceptor {
@Throws(IOException::class)
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request().newBuilder()
.addHeader("Content-Type", "application/json")
.build()
return chain.proceed(request)
}
}
)
.build()
return client
}
这是最喜欢的 API 接口
@POST("/v2.2/me/favorites")
fun setFavorite(
@Header("Authorization") accessToken: String,
@Body favorites: JSONObject
): Call<JsonElement>
这是我正在调用的函数..
private fun setFav(){
val retrofit = RetrofitClientInstance.retrofitInstance
var jsonObject = JSONObject()
jsonObject.put("id",track.id)
var jsonArray = JSONArray()
jsonArray.put(jsonObject)
var jsonObject1 = JSONObject()
jsonObject1.put("favorites", jsonArray)
val loginAPI = retrofit.create(TrackAPI::class.java)
val call = loginAPI.setFavorite("Bearer ZTM0NjgyODAtOTY0OS00MTZmLTllYmQtMTMzYWM3M2VhMjkz", jsonObject1)
call.enqueue(
object : Callback<JsonElement> {
override fun onFailure(call: Call<JsonElement>, t: Throwable) {
t.stackTrace
}
override fun onResponse(call: Call<JsonElement>, response: Response<JsonElement>) {
if (response.isSuccessful) {
var jsonElement: JsonElement? = response.body()
if (jsonElement != null) {
//Rest of the code
}
}
}
})
}
这是邮递员的回复。
邮递员图片 -->https://imgur.com/gbz3rAd.jpg
我正在发送 json 对象并接收 json 元素。 请给我解决方案。提前谢谢
【问题讨论】:
-
当 setFavorite 有 3 个没有默认值时,你如何用 2 个参数调用它?会不会是TrackAPI接口里多了一个setFavorite函数?
-
我更正了。我正在尝试这种方式,但没有解决方案
-
有人吗?帮帮我