簡體   English   中英

如何使用 Volley 將 JSONArray 發送到 PHP 服務器?

[英]How to send JSONArray to PHP server using Volley?

我對 Android 編程相當缺乏經驗,並且在將 JSONArray 發送到我的 PHP 服務器時遇到問題。 我正在使用以下代碼從我的 cursor 生成 JSONArray:

public JSONArray matrixJSON(){
        Cursor cursor = db.rawQuery("SELECT columnID,rowID,value FROM Matrix WHERE PolicyID=" + curPolicy,null);

        JSONArray resultSet = new JSONArray();
        cursor.moveToFirst();
        while (!cursor.isAfterLast()) {
            int totalColumn = cursor.getColumnCount();
            JSONObject rowObject = new JSONObject();
            for (int i = 0; i < totalColumn; i++) {
                if (cursor.getColumnName(i) != null) {
                    try {
                        rowObject.put(cursor.getColumnName(i),
                                cursor.getString(i));
                    } catch (Exception e) {
                        Log.d(TAG, e.getMessage());
                    }
                }
            }
            resultSet.put(rowObject);
            cursor.moveToNext();
        }

        cursor.close();
        return resultSet;

    }

我相信我誤解了如何通過 JsonARrayRequest 正確發送數據。 這是我用來發送數據的以下代碼。

public void sendData(JSONArray data) {
        RequestQueue queue = Volley.newRequestQueue(this);
        String url = "http://10.123.20.180:8080/insertmatrix.php";
        JsonArrayRequest dataReq = new JsonArrayRequest(Request.Method.POST, url, data,
                response -> Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_LONG).show(),
                error -> Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_LONG).show()){
            @Override
            protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) {

                if (response.data == null || response.data.length == 0) {
                    return Response.success(null, HttpHeaderParser.parseCacheHeaders(response));
                } else {
                    return super.parseNetworkResponse(response);
                }
            }
        };
        queue.add(dataReq);


    }

我沒有發送數據,而是留下了一個空白數組。 正如我在調試中看到的那樣,cursor 到 JSONarray function 工作正常,但是 php 服務器正在接收一個空白數組。 我認為我缺少一些基本功能。

通過將我的數組轉換為字符串然后使用StringRequest發送數據來修復它。

更新了 function:

public void sendData(JSONArray data) {
        RequestQueue queue = Volley.newRequestQueue(this);
        String url = "http://10.123.20.180:8080/insertmatrix.php";

        String json = data.toString();

        StringRequest dataReq = new StringRequest(Request.Method.POST,url,response -> Toast.makeText(MainActivity.this, "Success", Toast.LENGTH_LONG).show(),
                error -> Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_LONG).show()){
            @Override
            protected Map<String,String> getParams(){
                Map<String,String> params = new HashMap<String,String>();
                params.put("data",json);

                return params;
            }

        };

        queue.add(dataReq);


    }

暫無
暫無

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

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