asynchttpclient post方法使用
2016-05-09 19:37
555 查看
Android使用 asynchttpclient的post方法发送数据大致可分为两种情况;一种使用
这种是可以自定义post的参数的格式的,一般使用json,详情请见(http://stackoverflow.com/questions/26842090/asynchttpclient-passed-contenttype-will-be-ignored-because-httpentity-sets-cont)举例说明
另一种是使用
这个post方法,这种是就是常规的提价表单格式,齐参数的格式为username=yzk&password=yzk这种。使用举例
这其实是比赛项目中碰到的一个问题,一开始服务器写的是解析json格式的,而我使用的是第二种post方法,所以报错,还子啊上面花费一些时间,把服务器的代码改为了处理非json格式的,当时觉得asynchttpclient不可能不提供json的传递方法,于是又静下来看看,特在此总结。
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的传递方法,于是又静下来看看,特在此总结。
相关文章推荐
- GetPost请求网络数据 功能很强大
- 怎样在 Linux 中限制网络带宽使用
- servlet程序HTTP Status 500 - Error instantiating servlet class 解决
- ios网络请求特殊字符&处理
- 使用WinInet实现HTTP站点访问
- android播放网络音频
- Python模拟HTTPS请求返回HTTP 401 unauthorized错误
- 图解命令行http工具curl使用初步
- AJAX(XMLHttpRequest)进行跨域请求方法详解(三)
- AJAX(XMLHttpRequest)进行跨域请求方法详解(二)
- AJAX(XMLHttpRequest)进行跨域请求方法详解(一)
- HTTP的POST提交的四种常见消息主体格式
- web client6.0设置刀片服务器虚拟机网络
- Struts2 HTTP对象传递
- Android OkHttp完全解析 是时候来了解OkHttp了
- 简析TCP的三次握手与四次分手
- delphi使用IdHTTP模拟提交页面方法总结
- NodeJS学习笔记之Http模块
- nodejs http 发送请求
- Nodejs获取网络数据并生成Excel表格