android - 如何通过带有 header 的 volley 发布 JSON 请求?

标签 android json post kotlin android-volley

我尝试通过 Volley 发布 JSON 请求并收到错误 BasicNetwork.performRequest: 意外响应代码 500 该API URL在POSTMAN中测试正常,可以被IOS版本应用调用。

我怀疑 headers 值没有添加到我的代码中(如果我错了,请纠正我)

我尝试在代码中添加 getHeaders() 函数,但似乎不起作用。有人可以告诉我如何解决这个问题吗?

postman 结果 enter image description here

这是我当前的代码:-

 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.clipped_product_page)
        setTitle("Clipped Product")
        val actionbar = supportActionBar

        actionbar?.setDisplayHomeAsUpEnabled(true)
        actionbar?.setDisplayHomeAsUpEnabled(true)

        val URL = "https://api.sample.com/Api/user_id"

        val json = JSONObject()
        json.put("user_id", "1")
        json.put("code", "AB")

        val jsonOblect = object : JsonObjectRequest(
                Request.Method.POST,
                URL,
                json,
                Response.Listener {response ->
                    // Get your json response and convert it to whatever you want.
                    Toast.makeText(this, "You Clicked: $response", Toast.LENGTH_SHORT).show()
                },
                Response.ErrorListener {
                    Toast.makeText(this, "Error $it .message", Toast.LENGTH_SHORT).show()
                }
        ) {
            @Throws(AuthFailureError::class)
            override fun getHeaders(): Map<String, String> {
                val headers = HashMap<String, String>()
                headers.put("Content-Type", "application/json")
                return headers
            }
        }

        VolleySingleton.getInstance(this).addToRequestQueue(jsonOblect)

    }

如何实现这一目标并将输出转换为数组列表?

请帮忙谢谢。

最佳答案

使用 Volley 发送post请求

String URL = "";

JSONObject json = new JSONObject();
json.put("email", "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="73121110331211105d101c1e" rel="noreferrer noopener nofollow">[email protected]</a>");
json.put("password", "");
json.put("user_type", "");

 JsonObjectRequest jsonOblect = new JsonObjectRequest(Request.Method.POST, URL, json, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
             // Get your json response and convert it to whatever you want.
        }
    }, new Response.ErrorListener() {
          @Override
          public void onErrorResponse(VolleyError error) {
                // Error
          }
    }) {
          @Override
          public Map<String, String> getHeaders() throws AuthFailureError {
             final Map<String, String> headers = new HashMap<>();
             headers.put("Authorization", "TOKEN");//put your token here
             return headers;
          }
};

VolleyApplication.getInstance().addToRequestQueue(jsonOblect);

关于android - 如何通过带有 header 的 volley 发布 JSON 请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57798428/

相关文章:

android - 使用谷歌键盘作为输入在 EditText 上丢失跨度

php - 如何成功地将 $_POST <options> 从 <select> 到 PHP 中的另一个页面?

javascript - $http.post 文件大小限制?当然看起来像它

javascript - 需要帮助来归纳curl Post代码中的JS/Node.js

Android API 调用确定用户设置 "Data Enabled"

android - 带有 countDownTimer 的 onFinish 方法问题的 listView

android - 从互联网下载 Android 布局

json - Elasticsearch没有JSON查询的结果

python - Python 中的 CSV 文件到 JSON 文件

python - 如何从 SQL 查询创建 JSON 文件?