当前位置: 首页 > 知识库问答 >
问题:

科特林凌空Android POST多部分/窗体数据

鲜于阳
2023-03-14

我有以下步骤将GPS数据发送到我的odoo服务器。它工作得很好。但当我在截击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)
        }

共有2个答案

司宏伯
2023-03-14

它与内容类型:应用程序/json一起工作

沈畅
2023-03-14

我在下面的curl命令中遇到了类似的问题-

curl 'https://ws.test.com/handle_email?embed_load_code=undefined' -H 'Accept: /' -H 'Referer: https://cdn1.test.com/widgets/12345/12345/widget.html' -H 'Origin: https://cdn1.test.com' -H 'User-Agent: Test App' -H 'DNT: 1' -H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' --data 'campaign=12345&merchant=12345&original_data=%257B%2522site%2522%253A%2522site-11111-www.test.com%2522%257D&share_id=&email=test%40test.com' —compressed

简单的方法来弄清楚如何组织不同的cUrl查询到Volley请求是通过首先在Post Man中运行此cUrl查询并在Charles Proxy中拦截请求对象-参考文献:在PostMan中模拟特定的CURL

就我而言-

-h值被添加为Header项-数据值被添加为body Content-Type设置为应用程序/x-wow-form-urlencoded

 类似资料:
  • 如何在使用Kotlin的Spring Boot中正确初始化ConfigurationProperties? 目前我喜欢下面的例子: 但是它看起来很丑陋,实际上不是一个iable,foo是常量ue,应该在启动期间初始化,将来不会改变。

  • 问题内容: 我正在学习具有C ++和Java背景的Kotlin。我期待下面的打印,不。我知道这对应到。默认实现不比较每个成员,即和吗?如果是这样,它会不会看到字符串值相等(因为再次映射到字符串值)?显然,我在Kotlin中还没有涉及平等与身份相关的问题。 问题答案: 您描述的默认实现仅适用于数据类。不适用于从中继承实现的常规类,只需使对象与自身相等即可。

  • 这是正确的吗? 我可以找到一个相关的问题,但它是有参数的,我不能在没有params的情况下转换它。

  • 我正在尝试IntDef typedef将特定类型的参数限制为函数。但是当我使用Java使用IntDef时,它工作正常,但同时,它不适用于kotlin。以下是我的代码片段 - 在JAVA中- 在静态编程语言中- 在课堂上使用- 调用演示函数给我一个错误消息,说它必须是:< code>TransTypeJava之一。CASH,< code>TransTypeJava。通过传递< code>TransT

  • 我有静态编程语言界面 我如何从爪哇调用它?什么