android-async-http post request with body

Catherine picture Catherine · Feb 26, 2016 · Viewed 9.9k times · Source

It's require to realize a function that user can send feedback to the server in the app.And I use the asynchttpclient in the app.But I don't know how to do this.anyont knows how to do please tell me,thank you very much.

Here is the requirement:

  1. use post request with body(there is a parameter suggestion content)
  2. api:api/user/feedback?company_id=&access_token=

While I check the post method of asynchttpclient,I just found the following methods: public RequestHandle post(String url, ResponseHandlerInterface responseHandler) { return post(null, url, null, responseHandler); }

// [-] HTTP POST
// [+] HTTP PUT

/**
 * Perform a HTTP POST request with parameters.
 *
 * @param url             the URL to send the request to.
 * @param params          additional POST parameters or files to send with the request.
 * @param responseHandler the response handler instance that should handle the response.
 * @return RequestHandle of future request process
 */
public RequestHandle post(String url, RequestParams params, ResponseHandlerInterface responseHandler) {
    return post(null, url, params, responseHandler);
}

/**
 * Perform a HTTP POST request and track the Android Context which initiated the request.
 *
 * @param context         the Android Context which initiated the request.
 * @param url             the URL to send the request to.
 * @param params          additional POST parameters or files to send with the request.
 * @param responseHandler the response handler instance that should handle the response.
 * @return RequestHandle of future request process
 */
public RequestHandle post(Context context, String url, RequestParams params, ResponseHandlerInterface responseHandler) {
    return post(context, url, paramsToEntity(params, responseHandler), null, responseHandler);
}

/**
 * Perform a HTTP POST request and track the Android Context which initiated the request.
 *
 * @param context         the Android Context which initiated the request.
 * @param url             the URL to send the request to.
 * @param entity          a raw {@link cz.msebera.android.httpclient.HttpEntity} to send with the request, for
 *                        example, use this to send string/json/xml payloads to a server by
 *                        passing a {@link cz.msebera.android.httpclient.entity.StringEntity}.
 * @param contentType     the content type of the payload you are sending, for example
 *                        application/json if sending a json payload.
 * @param responseHandler the response ha   ndler instance that should handle the response.
 * @return RequestHandle of future request process
 */
public RequestHandle post(Context context, String url, HttpEntity entity, String contentType, ResponseHandlerInterface responseHandler) {
    return sendRequest(httpClient, httpContext, addEntityToRequestBase(new HttpPost(getURI(url)), entity), contentType, responseHandler, context);
}

/**
 * Perform a HTTP POST request and track the Android Context which initiated the request. Set
 * headers only for this request
 *
 * @param context         the Android Context which initiated the request.
 * @param url             the URL to send the request to.
 * @param headers         set headers only for this request
 * @param params          additional POST parameters to send with the request.
 * @param contentType     the content type of the payload you are sending, for example
 *                        application/json if sending a json payload.
 * @param responseHandler the response handler instance that should handle the response.
 * @return RequestHandle of future request process
 */
public RequestHandle post(Context context, String url, Header[] headers, RequestParams params, String contentType,
                          ResponseHandlerInterface responseHandler) {
    HttpEntityEnclosingRequestBase request = new HttpPost(getURI(url));
    if (params != null) request.setEntity(paramsToEntity(params, responseHandler));
    if (headers != null) request.setHeaders(headers);
    return sendRequest(httpClient, httpContext, request, contentType,
            responseHandler, context);
}

/**
 * Perform a HTTP POST request and track the Android Context which initiated the request. Set
 * headers only for this request
 *
 * @param context         the Android Context which initiated the request.
 * @param url             the URL to send the request to.
 * @param headers         set headers only for this request
 * @param entity          a raw {@link HttpEntity} to send with the request, for example, use
 *                        this to send string/json/xml payloads to a server by passing a {@link
 *                        cz.msebera.android.httpclient.entity.StringEntity}.
 * @param contentType     the content type of the payload you are sending, for example
 *                        application/json if sending a json payload.
 * @param responseHandler the response handler instance that should handle the response.
 * @return RequestHandle of future request process
 */
public RequestHandle post(Context context, String url, Header[] headers, HttpEntity entity, String contentType,
                          ResponseHandlerInterface responseHandler) {
    HttpEntityEnclosingRequestBase request = addEntityToRequestBase(new HttpPost(getURI(url)), entity);
    if (headers != null) request.setHeaders(headers);
    return sendRequest(httpClient, httpContext, request, contentType, responseHandler, context);
}

Answer

TUSHAR picture TUSHAR · Feb 26, 2016
    AsyncHttpClient client = new AsyncHttpClient();
    RequestParams params = new RequestParams();
    params.put("key", value);
    client.post(context, URL_YOURURL,
            params, new AsyncHttpResponseHandler() {

        Progress pd = new Progress(context);


                public void onStart() {

                    super.onStart();
                    pd.show();

                }

                @Override
                public void onSuccess(int arg0,
                        Header[] arg1, byte[] arg2) {



                    try {
                        JSONObject json = new JSONObject(
                                new String(arg2));

                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                }

                @Override
                public void onFailure(int arg0,
                        Header[] arg1, byte[] arg2,
                        Throwable arg3) {


                }

                public void onFinish() {
                    super.onFinish();
                    if(pd!=null){
                        pd.dismiss();
                    }



                }
            });


}

I think You are asking for this example.