簡體   English   中英

Android Volley POST無法正常工作

[英]Android Volley POST not working

我會列舉一些例子,但是我嘗試過的數十個例子似乎都不起作用。 如果嘗試使用requestJsonObject,則會在響應中收到一條錯誤消息,提示它無法將JSONArray放入JSONObject中。 如果我嘗試使用JSONArray,它似乎無法處理post參數。 我找到了一篇帖子,聲稱他們更新了一些內容以允許將JSONObject傳遞到JSONArray中,但找不到關於該代碼在何處或如何獲得該死的東西。 我要做的就是發送一個簡單的Rest帖子,並獲取json響應。 我正在一個接一個的接一個地瀏覽,而我對Java不夠熟悉,無法理解其中一些更復雜的答案,找不到沒有參數的答案,或試圖將JSONObject推入JsonArrayRequest的答案(這會拋出一個錯誤(對我來說是錯誤),您如何在Android中正常工作?!?! 這是我嘗試過的兩種方法

private void makeArrayRequest(String setSwitch)
{
    try {
        Map<String, String> params = new HashMap();
        params.put("func", setSwitch);
        JSONArray parameters = new JSONArray(params);

        DisplayToast("Sending: " + setSwitch);
        JsonArrayRequest jsonRequest = new JsonArrayRequest(
                Request.Method.POST, url, parameters,
                new Response.Listener<JSONArray>() {
                    @Override
                    public void onResponse(JSONArray response) {
                        DisplayText("Response: " + response.toString());
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        //error.printStackTrace();
                        DisplayText("Error:"+error.getMessage());
                    }
                }
        );
        Volley.newRequestQueue(this).add(jsonRequest);
    } catch(JSONException e) {
        // this ends up getting thrown because of the HASH input
        DisplayText("ArrErr:"+e.getMessage());
    }
}

private void makeObjectRequest(String setSwitch)
{
    DisplayToast("Sending: " + setSwitch);


    Map<String, String> params = new HashMap();
    params.put("func", setSwitch);

    JSONObject parameters = new JSONObject(params);

    JsonObjectRequest jsonRequest = new JsonObjectRequest(
            Request.Method.POST, url, parameters,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    DisplayText("Response: " + response.toString());
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //this ends up getting thrown because of JSONArray response?
                    DisplayText("Error:"+error.getMessage());
                }
            }
    );

    Volley.newRequestQueue(this).add(jsonRequest);
}

Java和PHP之間的差異是問題所在。 PHP對POST數據的處理方式不同,並且由於對值的編碼方式而無法獲取這些值。

解決方法是從php:// input解碼它們

$post = json_decode(file_get_contents("php://input"), true);

作為概述這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM