public void btnPostJson(View view) {

    // TODO 提交JSON

    JSONObject json = new JSONObject();

    try {
      json.put("name", "abc");
      json.put("pass", "123");
    } catch (JSONException e) {
      e.printStackTrace();
    }

    JsonObjectRequest request =
        new JsonObjectRequest(
            "http://10.0.175.103:8080/post",
            json,
            new Response.Listener<JSONObject>() {
              @Override
              public void onResponse(JSONObject response) {
                textView.setText("" + response.toString());
              }
            },
            new Response.ErrorListener() {
              @Override
              public void onErrorResponse(VolleyError error) {
                textView.setText("" + error.getMessage());
              }
            });

    RequestQueue requestQueue = NetworkSingleton.getInstance().getRequestQueue();

    requestQueue.add(request);
  }
  /**
   * Volley POST
   *
   * @param view
   */
  public void btnPostBytes(View view) {
    StringRequest request =
        new StringRequest(
            Request.Method.POST,
            "http://10.0.175.103:8080/post",
            new Response.Listener<String>() {
              @Override
              public void onResponse(String response) {
                textView.setText(response);
              }
            },
            new Response.ErrorListener() {
              @Override
              public void onErrorResponse(VolleyError error) {
                textView.setText(error.getMessage());
              }
            }) {
          // TODO 这个地方是,StringRequest 类的内部,相当于内部类
          // 需要重写特定的方法才可以实现POST提交真实的数据

          // 字节数组用在上传头像,上传图片之类的
          @Override
          public byte[] getBody() throws AuthFailureError {
            return "I love Android".getBytes();
            //                        return super.getBody();
          }

          /**
           * 在提交POST的时候,指定这个信息,来通知服务器 上传的内容是什么
           *
           * @return
           */
          @Override
          public String getBodyContentType() {
            return "text/plain";
            //                        return "application/json";
          }
        };

    // RequestQueue
    RequestQueue requestQueue = NetworkSingleton.getInstance().getRequestQueue();

    requestQueue.add(request);
  }
  /**
   * 点击按钮,发起POST提交
   *
   * @param view
   */
  public void btnPost(View view) {
    StringRequest request =
        new StringRequest(
            Request.Method.POST,
            "http://www.q.com", // url根据自己的该
            new Response.Listener<String>() {
              @Override
              public void onResponse(String response) {
                textView.setText(response);
              }
            },
            new Response.ErrorListener() {
              @Override
              public void onErrorResponse(VolleyError error) {
                textView.setText(error.getMessage());
              }
            }) {
          // TODO 这个地方是,StringRequest 类的内部,相当于内部类
          // 需要重写特定的方法才可以实现POST提交真实的数据
          /**
           * Ctrl + o 里面可以找到这个方法,避免写错 返回POST请求提交的数据,key=value的形式
           *
           * @return
           * @throws AuthFailureError
           */
          @Override
          protected Map<String, String> getParams() throws AuthFailureError {
            //                return super.getParams();
            HashMap<String, String> ret = new HashMap<String, String>();

            ret.put("name", "abc");
            ret.put("pass", "123");

            return ret;
          }
        };

    // RequestQueue
    RequestQueue requestQueue = NetworkSingleton.getInstance().getRequestQueue();
    requestQueue.add(request);
  }