带有正文的android-async-http发布请求 [英] android-async-http post request with body

查看:144
本文介绍了带有正文的android-async-http发布请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里是要求:

  1. 将发布请求与正文一起使用(有参数建议内容)
  2. api:api/用户/反馈?company_id =& access_token =

当我检查asynchttpclient的post方法时,我发现以下方法: 公共RequestHandle帖子(字符串url,ResponseHandlerInterface responseHandler){ 返回post(null,url,null,responseHandler); }

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);
}

推荐答案

    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.

这篇关于带有正文的android-async-http发布请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆