我试图同时了解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")
}
})
}
}
答案 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>>
}