Handler处理HTTP请求的封装
来源:互联网 发布:欧莱雅网络营销策划书 编辑:程序博客网 时间:2024/04/26 17:50
项目中经常用到大量的向server请求,然后返回json, 显示到手机上。
1. 封装Handler
public class RequestHandler extends Handler {
protected String returnString = null;
/**
* @param returnString the returnString to set
*/
public void setReturnString(String returnString) {
this.returnString = returnString;
}
/* (non-Javadoc)
* @see android.os.Handler#handleMessage(android.os.Message)
*/
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
}
}
2. 封装Thread
private RequestHandler handle=null;
String url=null;
HashMap <String ,Object> params=null;
String resMsg="";
private Message message =null;
public RequestHttp(RequestHandler handler,HashMap<String, Object> params) {
if(null == handler )
return;
this.handle = handler;
message = handle.obtainMessage();
this.url=HttpUtil.HttpDataSyncServiceUrl;
this.params=params;
}
@Override
public void run() {
super.run();
try {
//web请求,result为返回结果
callHttp();
message.what =Constant.HTTP_RESPONSE_OK;
} catch (Exception ex) {
message.what =Constant.EXCEPTION;
resMsg=ex.getMessage();
//resObj.setResInfo(resMsg);
} finally {
handle.sendMessage(message);
}
}
private void callHttp() {
Log.d("Time","Callstart:"+String.valueOf(new Date()));
// web请求
handle.setReturnString(HttpUtil.sendPostRequest(params, url));
// 得到返回结果
Log.d("Time","CallEnd:"+String.valueOf(new Date()));
}
}
3. 使用
private void callServerFr(){
processInfo = new TransparentDialog(ctx);
processInfo.initProgressDialog();
HashMap<String, Object> params = new HashMap<String, Object>();
params.put("action", "GETFRCAMPS");// 加入方法参数
//params.put("userId", app.getUid());// 加入参数
params.put("storeCode", currStore.getStoreCode());
params.put("camps", getCampiagnVersionFr());
(new RequestHttp(handlerFr, params)).start();
}
// 生成消息对象
RequestHandler handlerFr = new RequestHandler(){
public void handleMessage(Message m){
switch (m.what) {
case Constant.HTTP_RESPONSE_OK:
if (returnString != null) {
boolean res=dao.saveFrCampaignFromServer(returnString);
if(res){
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.setClass(CampaignHome.this, FrCampaignList.class);
startActivity(intent);
}else{
PageUtil.inform(ctx,"出错了,请重试" );
}
}
if (null != processInfo)
processInfo.progressDialog.dismiss();
break;
default:
if (null != processInfo)
processInfo.progressDialog.dismiss();
}
}
};
- Handler处理HTTP请求的封装
- 封装ng2的Http请求
- ngxin处理post请求的handler
- nginx处理post请求的handler
- 封装一个HTTP请求的辅助类
- Android 封装http请求的工具类
- 请求Http链接的封装类
- Android封装的HTTP请求组件
- Android 封装http请求的工具类
- Android 封装http请求的工具类
- php写的http请求封装类
- Android中Http请求类的封装
- Android 封装http请求的工具类
- android 封装Http请求的帮助类
- //封装发送http请求的工具包
- 项目优化-Http网络请求的封装
- 封装的Http请求(HttpURLConnection和okHttp)
- RxJava2和Retrofit Http请求的封装
- JS多个数组组合
- C#托管代码与C++非托管代码互相调用一(C#调用C++代码&.net 代码安全)
- 工作心语
- 男人励志100句!
- 科学松鼠会
- Handler处理HTTP请求的封装
- 其实c里面也有jdk,我们叫它mingw
- 使用 bjam 构建 crypto++
- 空间直线方程
- 关于three20
- linux防火墙与端口
- .NET输出紧凑HTML
- Ext Grid 单元格事件 可动态配置是否可编辑等
- Vim使用笔记