Google Volley : Как отправить запрос POST с данными Json ?

? anthony @ | Original: StackOverFlow
---

Я хотел бы отправить новый запрос JsonObjectRequest :

I want to receive Json data (response from server):OK

Я хочу отправить данные формата, JSON с этой просьбой к серверу

JsonObjectRequest request =
        new JsonObjectRequest(
                Request.Method.POST,
                "myurl.com",
                null,
                new Response.Listener<JSONObject>() {
                    @Override
                    public void onResponse(JSONObject response) {
                       //...
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                       //...
                    }
                })
                {
                    @Override
                    protected Map<String,String> getParams() {
                        // something to do here ??
                        return params;
                    }

                    @Override
                    public Map<String, String> getHeaders() throws AuthFailureError                    {
                        // something to do here ??
                        return params;
                    }
                };

Большое спасибо, ребята!

Ps : Я использую Gson LIB в моем проекте тоже.

---

Top 5 ответ

1shkschneider @

JsonObjectRequest actuallyaccepts JSONObject как тело .

С http://arnab.ch/blog/2013/08/asynchronous-http-requests-in-android-using-volley/

final String url = "some/url";
final JSONObject jsonBody = /* ... */;

new JsonObjectRequest(url, jsonBody, new Response.Listener<JSONObject>() { ... });

ВотОфициальный код и Javadoc ( @ параметров jsonRequest ) :

/**
 * Creates a new request.
 * @param method the HTTP method to use
 * @param url URL to fetch the JSON from
 * @param jsonRequest A {@link JSONObject} to post with the request. Null is allowed and
 *   indicates no parameters will be posted along with request.
 * @param listener Listener to receive the JSON response
 * @param errorListener Error listener, or null to ignore errors.
 */
public JsonObjectRequest(int method, String url, JSONObject jsonRequest,
        Listener<JSONObject> listener, ErrorListener errorListener) {
    super(method, url, (jsonRequest == null) ? null : jsonRequest.toString(), listener,
                errorListener);
}

https://android.googlesource.com/platform/frameworks/volley/+/master/src/com/android/volley/toolbox/JsonObjectRequest.java

2Manish Dubey @

Создание объекта класса «____» .

RequestQueue

СоздатьRequestQueue queue = Volley.newRequestQueue(this); с ответом и ошибок слушателя.

StringRequest

Добавить свой ​​запрос в StringRequest sr = new StringRequest(Request.Method.POST,"http://api.someservice.com/post/comment", new Response.Listener<String>() { @Override public void onResponse(String response) { mPostCommentResponse.requestCompleted(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { mPostCommentResponse.requestEndedWithError(error); } }){ @Override protected Map<String,String> getParams(){ Map<String,String> params = new HashMap<String, String>(); params.put("user",userAccount.getUsername()); params.put("pass",userAccount.getPassword()); params.put("comment", Uri.encode(comment)); params.put("comment_post_ID",String.valueOf(postId)); params.put("blogId",String.valueOf(blogId)); return params; } @Override public Map<String, String> getHeaders() throws AuthFailureError { Map<String,String> params = new HashMap<String, String>(); params.put("Content-Type","application/x-www-form-urlencoded"); return params; } }; .

RequestQueue

Создать queue.add(jsObjRequest); интерфейс только так вы можете увидеть его . Этопросто делегат для запроса асинхронной .

PostCommentResponseListener

Включить разрешение ИНТЕРНЕТ внутри public interface PostCommentResponseListener { public void requestStarted(); public void requestCompleted(); public void requestEndedWithError(VolleyError error); } файл.

AndroidManifest.xml