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

原创 2016年05月09日 19:37:37

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的传递方法,于是又静下来看看,特在此总结。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

from 表单post方式提交,返回json数据

action=”mvc/dangerApproval/safety_app_save” 如果aciton请求后不加.json Content-Type:application/x-www-...

Restful POST请求提交json或www-form-urlencoded数据格式的选择

www-form-urlencoded是POST数据默认编码格式,POST过去的key-value会被编码成QueryString,格式如下:name=test&gender=male&email=i...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

转 winfrom如何通过http来进行通信,并且通过传递json格式的数据可接受json格式的数据

winfrom如何通过http来进行通信,并且通过传递json格式的数据可接受json格式的数据   string username = this.textBox1.Text; ...

HttpPost Josn数据及服务端返回Json数据代码详解

最近在模拟post json数据到服务端,然后返回json信息,当然也要实现模拟服务端的代码,服务单可以用controller实现,但是发现一个问题,就是返回来的是个页面,页面中才包含返回的json数...

如何POST一个JSON格式的数据给Restful服务

在Android/java平台上实现POST一个json数据: JSONObject jsonObj = new JSONObject(); jsonObj.put("username", usern...

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

在Android中,提供了标准Java接口HttpURLConnection和Apache接口HttpClient,为客户端HTTP编程提供了丰富的支持 在HTTP通信中使用最多的就是GET和POS...

httpclient的几种post参数格式

1、json格式HttpClientContext context = HttpClientContext.create(); httpPost.setURI(java....

HttpClient4.3 用post方式传JSON格式字符串参数

直接上代码段: public String HttpPostWithJson(String url, String json) { String returnValue = "这是默认返回值...

java 通过http post方式传参参数json 方式

转自:http://zheyiw.iteye.com/blog/1571222,亲测没问题 Java代码   import java.io.IOException;   impo...

httpclient提交json参数

httpclient模拟请求,参数适用json post提交:private void httpReqUrl(List list, String url) throws ClientProtoc...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)