改装2请求始终失败-Kotin

时间:2018-12-20 06:38:43

标签: android api kotlin retrofit retrofit2

我试图同时了解Kotlin和改造2。我有这段代码。

我想从此https://jsonplaceholder.typicode.com/posts中获取所有/ posts。但是它总是返回失败代码。我对此很陌生,谢谢

网络界面

interface APIService {

@GET("/posts")
fun getPosts(): Call<List<UserData>>

POJO类

open class UserData {

@SerializedName("userId")
@Expose
open var user_id: Int? = null

@SerializedName("id")
@Expose
open var id: Int? = null

@SerializedName("title")
@Expose
open var title: String? = null

@SerializedName("body")
@Expose
open var body: String? = null
}

MainActivity

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    val retrofit = Retrofit.Builder()
            .addConverterFactory(GsonConverterFactory.create())
            .baseUrl("https://jsonplaceholder.typicode.com/")
            .build()

    val service = retrofit.create(APIService::class.java)

    service.getPosts().enqueue(object : Callback<List<UserData>> {
        override fun onFailure(call: Call<List<UserData>>?, t: Throwable?) {
            Log.d("RetrofitTest", t.toString())

        }

        override fun onResponse(call: Call<List<UserData>>?, response: Response<List<UserData>>?) {
            Log.d("RetrofitTest", "onFailure")
        }

    })
}
}

2 个答案:

答案 0 :(得分:0)

在APIService接口@GET(“ posts”)中插入@GET(“ / posts”)

答案 1 :(得分:0)

它总是失败,因为原因是无效的URL。您犯的错误是“ /”。您可以将斜杠('/')放在基本URL或端点的开头。就您而言,该网址类似于https://jsonplaceholder.typicode.com//posts。这是无效的,这就是您的请求失败的原因。因此,只需从端点中删除“ /”即可。

使请求界面如下:

interface APIService {

   @GET("posts")
   fun getPosts(): Call<List<UserData>>

   }