【问题标题】:Android Volley JsonObjectRequest Handle HTTP response status codeAndroid Volley JsonObjectRequest 处理 HTTP 响应状态码
【发布时间】:2020-04-13 01:12:51
【问题描述】:

我正在向服务器发送带有 json 数据的 http post 请求。当我在服务器上返回状态码 201 时,volley 会抛出错误。

我想要做的是将 jsonobjectrequest 发送到服务器,当我收到 http 状态代码 201 时处理它的响应。 错误是

 ParseError: org.json.JSONException: Value Created of type java.lang.String cannot be converted to JSONObject

代码如下:

val sendFirebaseTokenRequest = object: JsonObjectRequest(Request.Method.POST, url, tokenData,
                Response.Listener<JSONObject> { response ->

                   //this is not called since i return sendStatus(201) on server.i dont return json.






                },
                Response.ErrorListener { error ->

               //this is called because i return http status 201


                }
        )  {


            override  fun getHeaders(): MutableMap<String, String> {
                val headers = HashMap<String, String>()
                headers["Authorization"] = tokenStorage.getAccessToken()
                return headers
            }


        }

stackoverflow 上有一些类似的问题,但所有答案都已过时。看起来我应该覆盖某些东西但无法管理。我还尝试创建一些自定义请求类,但 stackoverflow 上的共享代码已过时且无法正常工作。

【问题讨论】:

    标签: android kotlin android-volley


    【解决方案1】:

    尝试将Response.Listener&lt;JSONObject&gt; 更改为Response.Listener&lt;String&gt; 它通常应该会成功。

    您应该检查您的 201 响应是否为 JSON 模式而不是纯文本。您能否发布收到的 JSON 响应?

    如果您希望您的 201 请求取得成功,您至少应该放置一个 json,例如:

    {
      "message": "The item was created successfully"
    }
    

    【讨论】:

    • 就是这样。我想发送 json 但我想收到状态码 201 而不是 json
    • 你能解释更多吗?你想收到 JSON 但不是在收到 201 响应时收到?
    • 我想要的只是接收 http 状态代码 201,仅此而已......只有 201 没有 json 只是 201 返回 res.sendStatus(201) 并且 volley 不应该抛出错误。 ofc 我知道从服务器返回 json 但我不想
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2020-07-14
    相关资源
    最近更新 更多