改造:网址正在更改

时间:2018-06-20 10:10:26

标签: android kotlin retrofit2

目前,我在翻新方面遇到一些问题。 我为RetrofitInstance提供的URL正在针对第二个请求进行更改。以下是代码:

object RetrofitClientInstance{

     private var retrofit: Retrofit? = null
     //private const val BASE_URL = "http://api.sample.com/req/";
     private const val BASE_URL = "http://test.sample.com/req/"
     private const val BASE_URL_VERSION = "v1/"


     fun getRetrofitInstance() : Retrofit {
        if (retrofit == null) {
            retrofit = Retrofit.Builder()
                    .baseUrl(BASE_URL + BASE_URL_VERSION)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build()
        }
        return this!!.retrofit!!
    }

}

以下是用于不同API请求的interface方法:

class UserLoginResponseReceiver{

    interface GetDataService {

        @FormUrlEncoded
        @POST(UrlEndPoints.USER_LOGIN_BY_FACEBOOK)
        fun loginUserByFacebook(@Field("access_token") last: String): Call<FbLoginResponse>

        @GET(UrlEndPoints.ALL_POSTS)
        fun getAllPosts() : Call<AllPostsResponse>

    }
}

UrlEndPoints.kt

object UrlEndPoints {

   const val USER_LOGIN_BY_FACEBOOK = "user/auth/facebook"
   const val ALL_POSTS = "post"
}

对于第一个请求( loginUserByFacebook ),我通过调试响应获得的URL是:

  

http://test.sample.com/req/v1/user/auth/facebook

这很好,并且运行良好。但是对于第二个请求( getAllPosts() ),我得到了以下URL:

  

http://test.sample.com/post

“ req / v1” 部分已完全切断!结果,我没有得到期望的响应。这到底是什么问题?请帮助我。

1 个答案:

答案 0 :(得分:1)

我无法重现此内容,您应该尝试清理/重建项目,此处提供的代码没有错误。

这是我添加的用于测试的代码:

DISPLAY=:0

按预期返回此处的URL,如下所示:

class AllPostsResponse
class FbLoginResponse

fun main(args: Array<String>) {
    val service = RetrofitClientInstance.getRetrofitInstance()
                     .create(UserLoginResponseReceiver.GetDataService::class.java)
    val url = service.getAllPosts().request().url()
    println(url)
}