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

标签: android post请求
8509人阅读 评论(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的传递方法,于是又静下来看看,特在此总结。

查看评论

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

我们在使用AsyncHttpClient的时候,可能很多人就直接是下面的用法RequestParams params = new RequestParams(); params.put("userna...
  • qq744746842
  • qq744746842
  • 2015年03月22日 22:20
  • 6296

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

Android使用 asynchttpclient的post方法发送数据大致可分为两种情况;一种使用 post(android.content.Context context, java.lang.S...
  • Guofengpu
  • Guofengpu
  • 2016年10月02日 16:12
  • 853

tornado AsynHTTPClient.fetch() 发送POST json数据

@tornado.web.asynchronous     def test_push_data2(self):         client = tornado.httpclient.AsyncHT...
  • bytxl
  • bytxl
  • 2015年07月20日 14:30
  • 3534

android-async-http开源项目对服务器端返回JSON数据的处理

一、在JavaEE项目中搭建环境 1. 导入相关jar包 2. 搭建相关的包和类 3.类中的方法简单实现 User: 声明以下属性,并实现无参构造器和有参构造器,以及各自的g...
  • lyy1104
  • lyy1104
  • 2014年05月26日 21:01
  • 12641

HttpClient通过Post方式发送Json数据

服务器用的是Springmvc,接口内容: @ResponseBody @RequestMapping(value="/order",method=RequestMethod.POST) pu...
  • majian_1987
  • majian_1987
  • 2015年08月17日 18:20
  • 93649

android----AsyncHttpClient的get,post和图片上传

async-http-client库是一个基于回调函数的Http异步通信客户端Android组件,是在Apache的HttpClient库的基础上开发构建而成的。   Eclipse使用:导入...
  • DickyQie
  • DickyQie
  • 2016年12月06日 17:34
  • 738

通过开源框架AsyncHttpClient获取Json数据

json简介 Json详细解析可见 http://redarmychen.iteye.com/blog/980243 JSON是JavaScript Object Notation的缩写,...
  • jdsjlzx
  • jdsjlzx
  • 2014年12月03日 11:04
  • 9065

Android 如何用HttpClient 以Post方式提交数据并添加http头信息

如何 post json格式的数据,并附加http头,接受返回数据,请看下面的代码: private void HttpPostData() { try { HttpClient httpclie...
  • love__coder
  • love__coder
  • 2011年09月10日 10:49
  • 22286

AsyncHttpClient RequestParams怎么封装下面格式的json

{     "data": {         "ID": "101",         "gh":"dsa"      },     "data1": "1243963669",    ...
  • miebaochuo3853
  • miebaochuo3853
  • 2016年12月31日 07:38
  • 241

AsyncHttpClient的数据请求使用的封装

近期干了一件非常蛋疼的事情,就是在整个项目的数据请求中添加参数,实现起来倒是简单,但是项目中的涉及到的网络请求没有封装,导致要改的话就要所有的网络请求以及接口都是要改动的,真心是无语。没办法,当时刚接...
  • engineer_zh
  • engineer_zh
  • 2017年06月05日 15:16
  • 634
    个人资料
    持之以恒
    等级:
    访问量: 8万+
    积分: 1399
    排名: 3万+
    最新评论