-
Notifications
You must be signed in to change notification settings - Fork 286
常见功能及问题
Jianbo Peng edited this page Mar 16, 2016
·
11 revisions
-
方法一
通过拦截事件回调方式达到目的。
1)、在BaseActivity或BaseFragment中继承HttpCycleContext接口
2)、添加字段
protected final String HTTP_TASK_KEY = "HttpTaskKey_" + hashCode();
3)、实现getHttpTaskKey方法
@Override public String getHttpTaskKey() { return HTTP_TASK_KEY; }
4)、在onDestroy中添加
HttpTaskHandler.getInstance().removeTask(HTTP_TASK_KEY);
优点: 省心,代码量少
-
方法二
在页面onDestroy中执行cancel请求
HttpRequest.cancel(url);
执行完成的请求cancel不了
- 方法一
JSONObject jsonObject = new JSONObject();
jsonObject.put("username", "myname");
jsonObject.put("password", "123456");
RequestParams params = new RequestParams(this);
params.applicationJson(jsonObject);
HttpRequest.post(Api.LOGIN, params, new JsonHttpRequestCallback());
- 方法二(不推荐)
通过addFormDataPart添加字段生成JSONObject
RequestParams params = new RequestParams(this);
params.addFormDataPart("username", "myname");
params.addFormDataPart("password", "123456");
params.applicationJson(null);
HttpRequest.post(Api.LOGIN, params, new JsonHttpRequestCallback());
- 方法三
通过setCustomRequestBody
JSONObject jsonObject = new JSONObject();
jsonObject.put("username", "myname");
jsonObject.put("password", "123456");
RequestParams params = new RequestParams(this);
params.setCustomRequestBody(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), jsonObject.toJSONString()));
- 方法四
JSONObject jsonObject = new JSONObject();
jsonObject.put("username", "myname");
jsonObject.put("password", "123456");
RequestParams params = new RequestParams(this);
params.setRequestBody(MediaType.parse("application/json; charset=utf-8"), jsonObject.toJSONString());
在OkHttpFinal中默认是采用UTF-8编码,开发者可以通过公共参数来修改编码
Headers commonHeaders = new Headers.Builder().add("charset", "GB2312").build();
OkHttpFinalConfiguration.Builder builder = new OkHttpFinalConfiguration.Builder()
.setCommenHeaders(commonHeaders);
OkHttpFinal.getInstance().init(builder.build());
1、OkHttpFinal内部使用的是fastjson android版本,如果开发者是本身已经使用了fastjson web版,建议开发者统一使用fastjson android版本
2、如果编译的时候出现 这样的错误,请在你项目的build.gralde中加上以下语句
android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/LICENSE'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/notice.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/ASL2.0'
}
}