【问题标题】:Problem in calling function as a send parameter in Kotlin retrofit在 Kotlin 改造中调用函数作为发送参数的问题
【发布时间】:2021-09-19 10:09:38
【问题描述】:

我面临的问题是,我不知道如何在演示者和视图类的以下函数中调用查询参数(id)。架构是 mvp。

我的 API URL 是::http://soanitravel.com/api/bookingdetail?id=2

我的 api 声明::
const val BASE_URL = "http://soanitravel.com/api/"
const val BOOKINGDETAILS = "bookingdetail/{id}"

我尝试这样获取api数据::

//GetFunction
     @GET(Apiurl.BOOKINGDETAILS)
        fun postBookingDetails(@Header("Authorization") token: BookingDetailsResponse, @Path("id") id: Int?): Observable<BookingDetailsResponse><br>

//Model class
     fun getBookingDetails(info: BookingDetailsResponse,id: Int): Observable<BookingDetailsResponse> {
        return webservice.postBookingDetails(info, id)
    }

//presenter class
    private fun DashboardRequest() {
        compositeDisposable.add(
            bookingDetailsModel.getBookingDetails(bookingDetailsView.getBookingDetailsRequest())  /// here red errors says id to put in getBookingDetailsRequest())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(this::dashboardSuccess, this::dashboardError)
        )
    }

 //View class
       fun getBookingDetailsRequest(): BookingDetailsResponse {
            return BookingDetailsResponse()
        }
      

【问题讨论】:

    标签: android api kotlin observable retrofit


    【解决方案1】:

    改造支持@Path 和@Query 参数。你需要在这里使用@Query。

    @GET(Apiurl.BOOKINGDETAILS)
    fun postBookingDetails(@Header("Authorization") token: BookingDetailsResponse,
         @Query("id") id: Int?): Observable<BookingDetailsResponse>
    

    为了更好的理解

    URI/路径参数。

    GET bookingdetail/2
    

    查询参数。

    GET bookingdetail?id=2
    

    【讨论】:

      猜你喜欢
      • 2019-06-17
      • 2019-11-11
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多