JsonArrayRequest Post方法无效

时间:2017-02-27 20:11:24

标签: android post android-volley

之前我没有使用过Volley,所以我在这里是新手。我尝试使用Post Parameters执行JSONArrayRequest。 PHP脚本将检查这些参数并使用将在列表中显示的JSON数组进行回答。 但不知何故Post Post不发送。所以我的PHP脚本说缺少post参数。

那么我做错了什么帖子参数不发送?

这是我的代码:

private void getPersonsData(final String PhoneNr, final String Password) {
    String url = "http://127.0.0.1:80/android_login_api/getmembers.php";
    JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Method.POST, url, null, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            try {
                //Adding a person in the list
                if (response.length() > 0) {
                    personList.clear();
                    for (int i = 0; i < response.length(); i++) {
                        JSONObject jsonObject = response.getJSONObject(i);
                        Person person = new Person();
                        if (!jsonObject.isNull("fullname")) {
                            person.name = jsonObject.getString("fullname");
                        }
                        if (!jsonObject.isNull("location")) {
                            person.location = jsonObject.getString("location");
                        }
                        personList.add(i, person);
                    }
                    mAdapter.notifyDataSetChanged();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            VolleyLog.e("Error: ", error.getMessage());
        }
    })  {

        @Override
        protected Map<String, String> getParams() {
            // Posting parameters to login url
            Map<String, String> params = new HashMap<String, String>();
            params.put("phonenr", PhoneNr);
            params.put("password", Password);

            return params;
        }

    };

    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(jsonArrayRequest);
}

以下是我的PHP代码的一些部分:

getmembers.php
<?php
require_once 'include/DB_Functions.php';
$db = new DB_Functions();
$response = array("error" => FALSE);

if (isset($_POST['phonenr']) && isset($_POST['password'])) {  //this goes on false

// receiving the post params
$phonenr = $_POST['phonenr'];
$password = $_POST['password'];

$user = $db->getUserByPhonenrAndPassword($phonenr, $password);

[...]

当有人发现我的错误时会很棒!

1 个答案:

答案 0 :(得分:1)

php中的普通$_POST方法在排球中不起作用。你需要在你的php文件中做这个。

$post = json_decode(file_get_contents("php://input"), true);
$my_value = $post['param1'];

param1是你排成一列的价值。

使用此:

final Hashmap<String,String> param1 = new Hashmap<string,string>();
param1.put("param1",your value);

它对我有用。你可以尝试一下

JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Method.POST, url, **new JSonObject(param1)**, new Response.Listener<JSONArray>() { . . . ..