curl - kotlin volley android POST 多部分/表单数据
问题描述
我有以下 curl 将 GPS 数据发送到我的 odoo 服务器。它工作得很好。但是当我尝试在 volley kotlin/androidstudio 中这样做时,它不起作用。请帮忙。
curl -X POST -H"Content-Type: multipart/form-data" -F coordinates=[4.5232, -96.4242] url
这是我到目前为止尝试过的代码片段:
var lat: Float = intent.getFloatExtra("LATITUDE",0f)
var lng: Float = intent.getFloatExtra("LONGITUDE",0f)
val coordinatesRequest = object: JsonObjectRequest(Request.Method.POST,
"http://url.com",
null,
Response.Listener<JSONObject>{response ->
Log.d(TAG,"Response: ${format(response.toString())}")
},
Response.ErrorListener { error ->
com.android.volley.VolleyLog.e(TAG,"/post request failed! Error: ${error.message}")
}) {
//override fun getBodyContentType(): String {
//return MULTIPART_FORMDATA
//}
override fun getBody(): ByteArray {
val params1 = HashMap<String, String>()
params1.put("coordinates","[$lat,$lng]")
val charset = Charsets.US_ASCII
//val map: List<String> = params.map {
//(key, value) -> "--$BOUNDARY\nContent-Disposition: form-data; name=\"$key\"\n\n$value\n"
//}
//val endResult = "${map.joinToString("")}\n--$BOUNDARY--\n"
return params1.toString().toByteArray(charset)
}
override fun getHeaders(): MutableMap<String, String> {
val headers = HashMap<String,String>()
headers.put("Content-Type","multipart/form-data")
return headers
}
}
Log.d(TAG, "lo que envío: ${coordinatesRequest.body}")
HttpRequestSingleton.getInstance(context.applicationContext).addToRequestQueue(coordinatesRequest)
}
解决方案
它解决了 Content-Type:application/json
推荐阅读
- python - 删除 Tkinter 按钮
- python - 重新排列数据框表 Pandas Python
- amazon-mws - MWS 提交提要返回 InputDataError
- ruby - 在数组中增加结构变量?
- python - 如何在熊猫数据框内的列表中破坏/弹出嵌套字典?
- spring-boot - 如何使用 jib-maven-plugin 构建 docker 镜像,但默认不推送?
- c++ - 为什么必须复制 std::initializer_list 的元素?
- synchronization - 如何将 fetch 同步到 JavaScript 中的其他 fetch
- javascript - 如何使用 javascript 将任何外部链接作为 url 参数传递?
- powershell - 从位于不同域的 UNC 路径复制项目