【问题标题】:Android Kotlin - Volley set POST Parameters in JsonArrayRequestAndroid Kotlin - Volley 在 JsonArrayRequest 中设置 POST 参数
【发布时间】:2020-06-19 00:35:47
【问题描述】:

这是代码:

val requestQueue: RequestQueue = Volley.newRequestQueue(this@MainActivity)

val jsonArrayRequest = JsonArrayRequest(
    Request.Method.POST,
    "$domain/do_getmemes.php",
    null,
    Response.Listener { response ->

    },
    Response.ErrorListener { // Do something when error occurred

    }
)

requestQueue.add(jsonArrayRequest)

我只想添加一些参数!

我看过这个 JAVA 示例:https://gist.github.com/mstfldmr/f6594b2337e3633673e5

但我不知道从这个可恶的例子中添加什么/在哪里/如何添加参数。

我尝试在JsonArrayRequest()之后添加这部分:

  {
    @Override
    protected Map<String,String> getParams(){
      Map<String,String> params = new HashMap<String, String>();
      params.put("user","YOUR USERNAME");
      params.put("pass","YOUR PASSWORD");
      return params;
    }
    @Override
    public Map<String, String> getHeaders() throws AuthFailureError {
      Map<String,String> params = new HashMap<String, String>();
      params.put("Content-Type","application/x-www-form-urlencoded");
      return params;
    }
  }

但它不会转换为 Kotlin。

我需要发送一些整数和字符串

【问题讨论】:

    标签: android kotlin android-volley


    【解决方案1】:

    添加对象以便您可以覆盖函数

    val jsonArrayRequest = object : JsonArrayRequest(
        Request.Method.POST,
        "$domain/do_getmemes.php",
        null,
        Response.Listener { response ->
    
        },
        Response.ErrorListener { // Do something when error occurred
    
        }
    ) {
        override fun getBody(): ByteArray {
            val parameters = HashMap<String, String>()
            parameters["key"] = "value"
            return JSONObject(parameters.toString()).toString().toByteArray()
        }
    }
    

    【讨论】:

    • 我没有收到任何错误,但它没有发送任何 POST 值。服务器上的 PHP 代码:file_put_contents('req.txt', $_POST['key']);创建一个空的 req.txt 文件,而不是其中的“值”
    • 你用邮递员试过你的api吗?成功了吗?
    • 邮递员?我通常为此 api 使用 loopj AsyncHttpClient,但它不适用于带有 ssl 的旧 Android 版本。因此,我已经提出了一个问题,并尝试使用 volley 作为替代
    • postman 是一个测试 api 请求的工具。您可能想创建一个简单的 php 来从键中捕获一个值,以检查您的 volley 请求是否传递了一个值。
    • 我做得很好:file_put_contents('req.txt', $_POST['key']);像这样使用 loopj 时,我总是测试 API。此外,我在覆盖乐趣 getHeaders() 中的覆盖乐趣上得到“冗余覆盖方法”,当我删除覆盖时:“'getHeaders'隐藏超类型'JsonArrayRequest'的成员并需要'覆盖'修饰符”smh ..我讨厌Android跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 2013-08-05
    • 2015-07-03
    • 2017-03-10
    相关资源
    最近更新 更多