在Kotlin中进行POST Retrofit 2x原始JSONArray字符串

时间:2018-12-21 11:37:10

标签: android kotlin retrofit retrofit2

如何使用改造在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()}")
                    }
                }
           }
    )

这是使用邮递员的成功案例示例

enter image description here

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

我通过添加以下依赖项来解决此问题:

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

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