使用Android中的Volley Lib将数据(POST或GET)发送到服务器

时间:2015-06-25 13:55:51

标签: php android android-volley

我已经开发了一个应用程序,我将通过Json将数据从手机发送到服务器,为此我使用 Volley Android中的图书馆 但我无法将数据发送到服务器!

我简单的PHP代码:

$name = $_GET["name"];
$j = array('name' =>$name);
echo json_encode($j);

我的java代码:

    private void makeJsonObjectRequest() {
        mRequestQueue = Volley.newRequestQueue(this);
        String url = "http://my-site-name/sampleGET.php";

        StringRequest jsonObjReq = new StringRequest(
            Request.Method.GET, 
            url,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    Log.d("result:", response);
                    Toast.makeText(getApplicationContext(), response, Toast.LENGTH_SHORT).show();
                }
            }, 
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    VolleyLog.d("err", "Error: " + error.getMessage());
                    makeJsonObjectRequest();
                }
            }
        ){
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<>();
                params.put("name", "json");
                return params;
            }
        };
        mRequestQueue.add(jsonObjReq);
    }

它也从以下链接获得帮助:Click to see link

但仍然无法使用它并从手机向服务器发送数据(POST或GET)!!! 我怎么能这样做?

1 个答案:

答案 0 :(得分:0)

正如How to send json from android to php?

所述

从当前代码中删除此方法:

        @Override
        protected Map<String, String> getParams() {
            Map<String, String> params = new HashMap<>();
            params.put("name", "json");
            return params;
        }

改为覆盖getBody()方法。然后,根据以下示例调整它以返回您需要的json数据:

    public byte[] getBody() throws AuthFailureError {
        JSONObject js = new JSONObject();
        try {
               js.put("fieldName", "fieldValue");
        } catch (JSONException e) {
               e.printStackTrace();
        }

        return js.toString().getBytes();
    }

然后在php中解码你的json数据:

    $jsonRequest = json_decode(stream_get_contents(STDIN));
    var_dump($jsonRequest);

如果需要更多信息,请与我们联系。