关闭

asynchttpclient的post方法发送json格式参数和表单格式参数

标签: androidpost请求
7910人阅读 评论(3) 收藏 举报
分类:

Android使用 asynchttpclient的post方法发送数据大致可分为两种情况;一种使用

post(android.content.Context context, java.lang.String url, cz.msebera.android.httpclient.HttpEntity entity, java.lang.String contentType, ResponseHandlerInterface responseHandler)

这种是可以自定义post的参数的格式的,一般使用json,详情请见(http://stackoverflow.com/questions/26842090/asynchttpclient-passed-contenttype-will-be-ignored-because-httpentity-sets-cont)举例说明

                AsyncHttpClient client = new AsyncHttpClient();
                final String url = Utils.baseUrl+"regist.html";
                JSONObject jsonObject = new JSONObject();
                try {
                    jsonObject.put("username",etPhoneNumber.getText());
                    jsonObject.put("password",etPassword.getText());
                } catch (JSONException e) {
                    e.printStackTrace();
                }
                ByteArrayEntity entity = null;
                try {
                    entity = new ByteArrayEntity(jsonObject.toString().getBytes("UTF-8"));
                    entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }

                client.post(mContext,url,entity,"application/json",new JsonHttpResponseHandler(){
                    @Override
                    public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                        super.onSuccess(statusCode, headers, response);
                        Log.e("rs",response.toString());
                    }

                    @Override
                    public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                        super.onFailure(statusCode, headers, throwable, errorResponse);
                    }
                });

另一种是使用

post(java.lang.String url, RequestParams params, ResponseHandlerInterface responseHandler)

这个post方法,这种是就是常规的提价表单格式,齐参数的格式为username=yzk&password=yzk这种。使用举例

 final RequestParams params = new RequestParams();
                params.put("username",etPhoneNumber.getText());
                params.put("password",etPassword.getText());
                client.post(url,params,new JsonHttpResponseHandler(){
                    @Override
                    public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
                        super.onSuccess(statusCode, headers, response);
                        try {
                            Log.e("rs",response.getString("status"));
                            if(response.getString("status").equals("0")){
                                user = User.getInsstance();
                                user.setIsOnline(true);
                                user.setToken(response.getString("token"));
                                user.setId(etPhoneNumber.getText().toString());
                                Toast.makeText(mContext,"注册成功",Toast.LENGTH_LONG).show();
                                mContext.finish();
                            }else{
                                Toast.makeText(mContext,"改用已注册",Toast.LENGTH_LONG).show();
                            }
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                    @Override
                    public void onFailure(int statusCode, Header[] headers, Throwable throwable, JSONObject errorResponse) {
                        super.onFailure(statusCode, headers, throwable, errorResponse);
                        Toast.makeText(mContext,"网络错误",Toast.LENGTH_LONG).show();
                    }

这其实是比赛项目中碰到的一个问题,一开始服务器写的是解析json格式的,而我使用的是第二种post方法,所以报错,还子啊上面花费一些时间,把服务器的代码改为了处理非json格式的,当时觉得asynchttpclient不可能不提供json的传递方法,于是又静下来看看,特在此总结。

3
0
查看评论

使用开源框架AsyncHttpClient进行Json的Post请求

我们在使用AsyncHttpClient的时候,可能很多人就直接是下面的用法RequestParams params = new RequestParams(); params.put("username", userName); params.put("userpas...
  • qq744746842
  • qq744746842
  • 2015-03-22 22:20
  • 6040

asynchttpclient的post方法发送json格式参数和表单格式参数

Android使用 asynchttpclient的post方法发送数据大致可分为两种情况;一种使用 post(android.content.Context context, java.lang.String url, cz.msebera.android.httpclient.HttpEntit...
  • Guofengpu
  • Guofengpu
  • 2016-10-02 16:12
  • 789

轻松把玩HttpAsyncClient之模拟post请求示例

如果看到过我前些天写过的《轻松把玩HttpClient之模拟post请求示例》这篇文章,你再看本文就是小菜一碟了,如果你顺便懂一些NIO,基本上是毫无压力了。因为HttpAsyncClient相对于HttpClient,就多了一个NIO,这也是为什么支持异步的原因。不过我有一个疑问,虽说NIO是同步...
  • xiaoxian8023
  • xiaoxian8023
  • 2015-11-23 09:13
  • 16810

AsyncHttpClient的数据请求使用的封装

近期干了一件非常蛋疼的事情,就是在整个项目的数据请求中添加参数,实现起来倒是简单,但是项目中的涉及到的网络请求没有封装,导致要改的话就要所有的网络请求以及接口都是要改动的,真心是无语。没办法,当时刚接手这个项目的时候就想过要封装一个网络请求的框架,但是又觉得工作量太大,而且自己擅自改动后还要再走测试...
  • engineer_zh
  • engineer_zh
  • 2017-06-05 15:16
  • 453

使用AsyncHttpClient 实现get和post请求

AsyncHttpClient简介:
  • bifei8718
  • bifei8718
  • 2014-08-14 17:34
  • 1898

Android-使用GET、POST、AsyncHttpClient向服务器提交数据

在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持 在HTTP通信中使用最多的就是GET和POST了,GET请求可以获取静态页面,也可以把参数放在URL字符串的后面,传递给服务器。 POST与G...
  • qiuqiu_qiuqiu123
  • qiuqiu_qiuqiu123
  • 2017-02-18 23:31
  • 1372

使用AsyncHttpClient 实现get和post请求

AsyncHttpClient简介: AsyncHttpClient庫 基於Apache的HttpClient框架,是一個異步的httpClient, 所有的http請求都在子線程中,但是callback執行的線程和創建這個callback的線程是同一個(也即主線程創建的cal...
  • bfboys
  • bfboys
  • 2016-10-30 19:46
  • 524

android(21)(使用HttpURLConnection,HttpClient和AsyncHttpClient分别实现post和get请求数据)

1.使用HttpURLConnection实现post和get请求数据: (1)NetUtils类: public class NetUtils { private static final String TAG = "NetUtils"; /** * 使用...
  • u014756517
  • u014756517
  • 2015-12-05 14:08
  • 848

HttpAsyncClient之模拟post请求示例

如果看到过我前些天写过的《轻松把玩HttpClient之模拟post请求示例》这篇文章,你再看本文就是小菜一碟了,如果你顺便懂一些NIO,基本上是毫无压力了。因为HttpAsyncClient相对于HttpClient,就多了一个NIO,这也是为什么支持异步的原因。 不过我有一个疑问,虽说N...
  • z69183787
  • z69183787
  • 2016-11-03 18:13
  • 910

android 开发中接触的各种网络请求框架总结

前言: 开发中接触了不少网络请求的框架,包括Volley,HttpCliet AsyncHttpClient,Okhttp,OkhttpUtils,HttpUrlConnection,Retrofit。虽说一个项目顶多使用一种框架,但是我们难免接触基于不同框架下开发的app,所以认识和了解它们就显...
  • GLOD_FISH
  • GLOD_FISH
  • 2017-12-26 14:26
  • 96
    个人资料
    • 访问:75061次
    • 积分:1326
    • 等级:
    • 排名:千里之外
    • 原创:59篇
    • 转载:1篇
    • 译文:0篇
    • 评论:31条