【问题标题】:android - retrofit returns nullandroid - 改造返回 null
【发布时间】:2019-02-14 06:48:23
【问题描述】:

我想通过改造返回数据,这是我的 api 中的 json

{
"peyks": [{
    "name": "\u0627\u062a\u0646\u0627\u0644",
    "vasile": "\u067e\u06cc\u06a9 \u0645\u0648\u062a\u0648\u0631\u06cc",
    "address": "\u0646\u062a\u0644\u0628\u0627\u0644\u062f\u062a\u0644\u0644\u062a",
    "date": "1397-11-25  09:50:54",
    "tel": "00000000000"
}, {
    "name": "\u0627\u062a\u0646",
    "vasile": "\u067e\u06cc\u06a9 \u0645\u0648\u062a\u0648\u0631\u06cc",
    "address": "\u062a\u0627\u0627\u0644\u0644\u0628\u0633",
    "date": "1397-11-24  18:20:16",
    "tel": "00000000000"
}]
}

我正在使用 json 编码,这是我的连接类:

object ApiConnection {
val BaseUrl ="http://site.ir/"
val client: Retrofit
    get() {
        val gson = GsonBuilder()
            .setLenient()
            .create()

        ///for Logging
        val interceptor = HttpLoggingInterceptor()
        interceptor.level = HttpLoggingInterceptor.Level.BODY
        val client = OkHttpClient.Builder().addInterceptor(interceptor).build()


        var retrofit = Retrofit.Builder()
            .baseUrl(BaseUrl)
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .addConverterFactory(GsonConverterFactory.create(gson))
            .client(client)
            .build()
        return retrofit
    }

}

这些是模型类:

    data class Peyk_item(
        val address: String,
        val date: String,
        val name: String,
        val tel: String,
        val vasile: String
)

    data class Peyks(
        val peyks: List<Peyk_item>
)

这是我的接口类:

    interface getPeykHistoryApi {
    @FormUrlEncoded
    @POST("getPeykList.php")
    fun getPeykHistory(@Field("uid")uid:String): Single<Peyks>
}

这是活动类代码

 val get:getPeykHistoryApi=ApiConnection.client.create(getPeykHistoryApi::class.java)
    get.getPeykHistory(Func.getUid(this))
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({ result ->

            }, { error ->
                MyToast.makeText(this@PeykHistory, "2 error " +error.localizedMessage.toString());
            })

清单没问题,它有互联网权限

当我运行该应用程序时,它在模拟器中运行良好并返回数据,它在我的带有 android 6 的手机上运行良好,但它不适用于两部带有 android oreo (8) 的手机

它不会进入错误部分,它会进入结果但响应为 null 。

怎么了?

【问题讨论】:

  • 您在日志中找到什么了吗?请放在这里。
  • 看看这个问题,这可能是你的问题:stackoverflow.com/q/45940861/10271334
  • @PratikButani no , log cat 中没有错误
  • @JeelVankhede 我试过了,但是没用

标签: android kotlin retrofit


【解决方案1】:

试试这个它可能有助于解决你的问题,因为你必须在应用程序标签中添加这个网络安全。

AndroidManifest.xml

<application
    ...
    android:usesCleartextTraffic="true">
</application>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2021-10-28
    • 2018-01-22
    • 2022-01-05
    • 1970-01-01
    • 2019-06-20
    相关资源
    最近更新 更多