【问题标题】:POST Retrofit 2x raw JSONArray String in Kotlin在 Kotlin 中发布改造 2x 原始 JSONArray 字符串
【发布时间】:2018-12-21 11:37:10
【问题描述】:

如何使用改造在 kotlin 中发布原始 jsonArray 字符串

我对 onFailure 方法有超时响应

这是我要发布的字符串数组示例

[{"username":"username4"},{"username":"username2"}]

这是我的端点定义

@Headers("Content-Type: application/json;charset=UTF-8")
    @POST("insert/createuser")
    fun postuser(@Body logs:String ):Call<ArrRes>

这是我的课

class ArrRes{

    @SerializedName("username")
    @Expose
    var username: String = ""

    @SerializedName("message")
    @Expose
    var message: String = ""

    @SerializedName("status")
    @Expose
    var status: String = ""
}

这是我的发帖方式

var obj = JSONObject(); var arr = JSONArray();

    for (i in 0  until 5){
        obj.put("username","username${i}");
        arr.put(obj);
    }

    Log.i("app:sync","${arr.toString()}")

    mService!!.postuser(arr.toString()).enqueue(
           object : Callback<LogResponse> {
                override fun onFailure(call: Call<LogResponse>, t: Throwable) {
                    Log.i("app:retro:service", "onFailure ${t.message}")
                }

                override fun onResponse(call: Call<LogResponse>, response: Response<LogResponse>) {
                    if (response.isSuccessful()) {
                        Log.i("app:retro:service", "onResponse true ${response.body()!!.toString()}")
                    } else {
                        Log.i("app:retro:service", "onResponse false ${response.raw().toString()}")
                    }
                }
           }
    )

这里是使用邮递员的示例成功帖子

感谢您的帮助:)

【问题讨论】:

  • 这取决于您的网络服务期望发布的内容。您能否添加一些有关此的信息以及您的改造端点定义。
  • 感谢您的回复。我的网络服务是 python。这将收到 sa text/json 并有响应。我使用邮递员通过示例成功帖子更新了我的问题
  • 你的改造端点定义怎么样?
  • 哦抱歉我忘了会再更新。
  • 如果您的错误是服务器超时,则您的问题与您的代码无关。这似乎是服务器端的..

标签: android kotlin retrofit retrofit2


【解决方案1】:

我通过添加这个依赖来解决这个问题:

implementation 'com.squareup.retrofit2:converter-scalars:$version'

有多种现有的 Retrofit 转换器可用于各种数据格式。您可以将 Java 对象序列化和反序列化为 JSON 或 XML 或任何其他数据格式,反之亦然。在可用的转换器中,您还可以找到一个 Retrofit Scalars Converter,它可以解析任何要放入请求正文中的 Java 原语。转换适用于两个方向:请求和响应。 https://futurestud.io/tutorials/retrofit-2-how-to-send-plain-text-request-body

【讨论】:

    猜你喜欢
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    相关资源
    最近更新 更多