Android Kotlin Volley 如何发送 JSON 数据
Posted
技术标签:
【中文标题】Android Kotlin Volley 如何发送 JSON 数据【英文标题】:Android Kotlin Volley How to send JSON Data 【发布时间】:2021-11-05 22:35:29 【问题描述】:我想使用 Volley 将 JSON 有效负载发送到 REST API。但我得到一个错误
“com.android.volley.ParseError: org.json.JSONException: org.json.JSONArray 类型的值 [] 无法转换为 JSONObject”
来自 Magento 的有效负载 https://devdocs.magento.com/guides/v2.4/rest/tutorials/inventory/create-cart-add-products.html
JSON 负载
"cartItem":
"sku": "10-1001",
"qty": 5,
"quote_id": "3"
排球代码
// Create JSON
val itemsObject = JSONObject()
itemsObject.put("sku", "10-1001")
itemsObject.put("qty", 5)
itemsObject.put("quote_id", "3")
val itemsArray = JSONObject()
itemsArray.put("cartItem", itemsObject)
val jsonRequest = object : JsonObjectRequest(
Request.Method.POST, url, itemsArray,
Response.Listener response ->
try
binding.txtStatus.text = response.toString()
catch (e: JSONException)
e.printStackTrace()
binding.txtStatus.text = e.toString()
,
Response.ErrorListener error ->
binding.txtStatus.text = error.toString()
)
@Throws(AuthFailureError::class)
override fun getBodyContentType(): String
return "application/json"
override fun getHeaders(): Map<String, String>
val apiHeader = HashMap<String, String>()
apiHeader["Authorization"] = "Bearer $cusToken"
return apiHeader
val queue = Volley.newRequestQueue(this@MainActivity)
queue.add(jsonRequest)
【问题讨论】:
【参考方案1】:您应该使用JSONArray
而不是JSONObject
。你的itemsArray
必须是这样的:
val itemsArray = JSONArray()
您的请求负载必须如下所示,并且可以有多个对象:
[
"sku":"10-1001",
"qty":5,
"quote_id":"3"
,
"sku":"10-1002",
"qty":1,
"quote_id":"2"
]
原因是负载现在包含多个项目。您可以在JSONArray
中添加多个JSONObject
。
另一种方法是,如果您想在请求有效负载中发送一些其他信息,那么您可能需要以下列方式使用:
"cartItems":[
"sku":"10-1001",
"qty":5,
"quote_id":"3"
,
"sku":"10-1002",
"qty":1,
"quote_id":"2"
],
"otherInfo":"sampleInfo"
【讨论】:
我无法更改负载类型,这是 Magento 负载 devdocs.magento.com/guides/v2.4/rest/tutorials/inventory/…以上是关于Android Kotlin Volley 如何发送 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章
Android Kotlin Volley 如何从 JSONArray 中获取价值
Kotlin编程开发Android运用程序(Volley+Gson依赖库)
kotlin volley android POST 多部分/表单数据