一直是做.Net MVC开发的,结果有项目要求做android客户端,悲剧…… java基本等于0,只能折腾,近2个月终于完成

Android客户端 + Asp.net MVC3服务端主要问题就是通信.测试了N多,最后找到了个比较好用的jar包用做客户端数据提交:

android-async-http 官网和下载地址:http://loopj.com/android-async-http/

群里朋友给了很精准的描述:

Http请求均位于非UI线程,不会阻塞UI操作
处理异步Http请求,并通过匿名内部类处理回调结果
通过线程池处理并发请求
处理文件上传、下载
响应结果自动打包JSON格式
自动处理连接断开时请求重连

闲话不说,上代码:

 1 // 访问的url
 2 String Url = "http://192.168.1.121/WebApp/Post";
 3 
 4 AsyncHttpClient client = new AsyncHttpClient();
 5 
 6 // 上传图片或者文件
 7 File file = new File(Environment.getExternalStorageDirectory()+ "/temp.jpg");
 8 // 参数
 9 RequestParams params = new RequestParams();
10 params.put("userName", "admin");
11 params.put("pwd", "123");
12 try {
13     params.put("file", file);
14 } catch (FileNotFoundException e1) {
15     e1.printStackTrace();
16 }
17 
18 client.post(Main.this, Url, params, new JsonHttpResponseHandler() {
19 
20     @Override
21     public void onStart() {
22         //此处添加程序开始时候的动作,如创建一个圆形进度条
23     }
24 
25     @Override
26     public void onFinish() {
27         //此处添加程序完成后的代码,如进度条结束
28     }
29 
30     @Override
31     public void onSuccess(JSONObject jsonObject) {
32         super.onSuccess(jsonObject);
33         try {
34             String status = jsonObject.getString("m");
35             Log.e("msg", status);
36         } catch (JSONException e) {
37             // TODO Auto-generated catch block
38             e.printStackTrace();
39         }
40 
41     }
42 
43     @Override
44     public void onFailure(Throwable e, String response) {
45         Log.e("msg", e + "");
46         mypDialog.dismiss();
47     }
48 
49 });
客户端

服务端部分,我用的是Asp.Net MVC3

 1 public JsonResult AttendancePost(string phoneId, string companyCode, string userId, string userName, string pwd, string AttendType, string lonLat)
 2 {
 3     try
 4     {               
 5 
 6         #region 照片上传
 7 
 8         var file = Request.Files["file"];
 9         if (file != null)
10         {
11             string relativePath = "/Upload/";
12             string fileType = "jpg";
13             string fileName = DateTime.Now.ToString("yyyyMMddHHmmssfff") + "." + fileType;
14             string absolutePath = AppDomain.CurrentDomain.BaseDirectory + relativePath;
15             string fileFullPath = Path.Combine(absolutePath, fileName);
16  
17             //自己编写上传的方法
18             UploadHelper.UploadFile(fileFullPath, file);
19         }
20 
21         #endregion
22 
23         return Json(new { m = "上传成功", s = "S" }, "text/plain", JsonRequestBehavior.AllowGet);
24 
25     }
26     catch (Exception ex)
27     {                
28         return Json(new { m = "上传失败", s = "S" }, "text/plain", JsonRequestBehavior.AllowGet);
29     }
30 
31 
32 }
服务端

基本上Android和MVC之间的通讯方式就是类似这样,客户端部分采用Get或者Post方式可以去官网查看,有比较完整的demo

 

 

 

 

posted on 2013-05-17 11:30  裁决  阅读(638)  评论(3编辑  收藏  举报