使用Volley android将发布数据发送到服务器

The*_*heo 5 post android android-volley

我正在尝试使用Volley库将一些数据发送到服务器.

   private void registerUser(final String email, final String username,
                          final String password) {
    // Tag used to cancel the request
    String tag_string_req = "req_register";

    pDialog.setMessage("Registering ...");


    StringRequest strReq = new StringRequest(Method.POST,
            AppConfig.URL_REGISTER, new Response.Listener<String>() {

        @Override
        public void onResponse(String response) {
            Log.d(TAG, "Register Response: " + response.toString());


            try {
                JSONObject jObj = new JSONObject(response);
              //  String status = jObj.getString("status");

                    // User successfully stored in MySQL
                    // Now store the user in sqlite

                    String name = jObj.getString("username");
                    String email = jObj.getString("email");
                    String password = jObj.getString("password");
                   // String created_at = user
                            //.getString("created_at");

                    // Inserting row in users table
                   // db.addUser(name, email);

                    // Launch login activity
                    Intent intent = new Intent(
                            RegisterActivity.this,
                            LoginActivity.class);
                    startActivity(intent);
                    finish();


            } catch (JSONException e) {
                e.printStackTrace();
            }

        }
    }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            Log.e(TAG, "Registration Error: " + error.getMessage());
            Toast.makeText(getApplicationContext(),
                    error.getMessage(), Toast.LENGTH_LONG).show();

        }
    }) {

        @Override
        protected Map<String, String> getParams() {
            // Posting params to register url
            Map<String, String> params = new HashMap<String, String>();


            params.put("email", email);
            params.put("username", username);
            params.put("password", password);

            return params;
        }
Run Code Online (Sandbox Code Playgroud)

不幸的是没有发送json,我什么都没收到.这是我的logcat输出的示例.在成功向服务器发送请求后,我想获得成功/失败的响应.

Register Response: ---- YOUR DATA ----
username=xxx&email=xxx%40gmail.com&password=xxxx&-------------------
05-05 14:56:55.002    2558-2558/app.victory.walking.thewalkingviktory   
W/System.err? org.json.JSONException: Value ---- of type java.lang.String   
cannot be converted to JSONObject
05-05 14:56:55.002    2558-2558/app.victory.walking.thewalkingviktory   
W/System.err? at org.json.JSON.typeMismatch(JSON.java:111)
05-05 14:56:55.002    2558-2558/app.victory.walking.thewalkingviktory   
W/System.err? at org.json.JSONObject.<init>(JSONObject.java:160)
05-05 14:56:55.002    2558-2558/app.victory.walking.thewalkingviktory   
W/System.err? at org.json.JSONObject.<init>(JSONObject.java:173)
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?感谢名单.

Ank*_*mar 6

 private void postUsingVolley() {
    String tag_json_obj = "json_obj_req";

    final ProgressDialog pDialog = new ProgressDialog(this);
    pDialog.setMessage("posting...");
    pDialog.show();

    final String mVendorId = DeviceDetails.getInstance(mContext).getVendor_id();
    String mUserId = UserModel.getInstance(mContext).getUser_id();

    final HashMap<String, String> postParams = new HashMap<String, String>();
    sendFeedbackParams.put("key1", value1);
    sendFeedbackParams.put("key2", value2);
    sendFeedbackParams.put("key3", value3);

    JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
            ApplicationData.POST_URL, new JSONObject(postParams),
            new com.android.volley.Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    //Log.d("TAG", response.toString());
                    try {
                        //Toast.makeText(mContext, response.getString("message"), Toast.LENGTH_LONG).show();
                        Toast.makeText(mContext, "Thank you for your post", Toast.LENGTH_LONG).show();

                        if (response.getBoolean("status")) {
                            pDialog.dismiss();
                            finish();
                        }
                    } catch (JSONException e) {
                        Log.e("TAG", e.toString());
                    }
                    pDialog.dismiss();
                }
            }, new com.android.volley.Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {
            //VolleyLog.d("TAG", "Error: " + error.getMessage());
            pDialog.dismiss();
            if (isNetworkProblem(error)) {
                Toast.makeText(mContext, "Internet Problem", Toast.LENGTH_SHORT).show();

            }
        }
    }) {

        @Override
        public String getBodyContentType() {
            return "application/json; charset=utf-8";
        }

        @Override
        public Map<String, String> getHeaders() throws AuthFailureError {
            return getRequestHeaders();
        }
    };

    jsonObjReq.setRetryPolicy(new DefaultRetryPolicy(8000, 0, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
    // Adding request to request queue
    AppController.getInstance().addToRequestQueue(jsonObjReq, tag_json_obj);
}
Run Code Online (Sandbox Code Playgroud)

像这样使用Volley,......这对我有用.