无纸化会议-数据绑定和网络连接

无纸化会议-数据绑定和网络连接

数据绑定和网络连接功能基本完成,现在客户端可以通过网络请求同步服务器数据了。

界面中硬编码的文字,比如标题和时钟,已经替换成了实时更新的数据,根据后端提供的http接口文档编写了对应的数据类,实现了网络请求功能。

http请求实现方案

客户端http请求使用RestSharp库实现,使用Newtonsoft.Json库实现json的编解码

关键代码举例

public static string post(string rootPath,Dictionary<string,object> jsonRequest)
        {
            string url = WebUtil.url(rootPath);
            Dictionary<string, object> dict = jsonRequest;
            Log.l(name, "post");
            Log.l(name, "url", url);
            var client = new RestClient(url);
            var request = new RestRequest(Method.POST);
            request.AlwaysMultipartFormData = true;
            foreach (string key in dict.Keys) {
                request.AddParameter(key, dict[key]);
                Log.l(name, "param", $"{key}:{dict[key]}");
            }
            var response = client.Post(request);
            Log.l(name, "status", response.StatusCode.ToString());
            string res = response.Content;
            Log.l(name, "res", res);
            JObject j = (JObject)JsonConvert.DeserializeObject(res);
            return JsonConvert.SerializeObject(j["obj"]);
        }
        public static void downloadFile(int id,string localName)
        {
            var client = new RestClient(url("/file/download"));
            var request = new RestRequest();
            request.AddParameter("fileId", id);
            byte[] data =client.DownloadData(request);
            
            FileStream f = new FileStream(Path.Combine(Settings.fileDir,localName),FileMode.OpenOrCreate);
            BinaryWriter binaryWriter = new BinaryWriter(f);
            binaryWriter.Write(data);
        }
        public static string url(string path)
        {
            return string.Format("{0}://{1}:{2}{3}", Settings.protocol, Settings.domain, Settings.port, path);
        }

List<util.Vote> getVoteList(int meetingId, int deviceId) {
            Dictionary<string, object> dict = new Dictionary<string, object>();
            dict["meetingId"] = meetingId;
            dict["deviceId"] = deviceId;
            string str = WebUtil.post("/vote/getVoteList", dict);
            return JsonConvert.DeserializeObject<List<util.Vote>>(str);
        }
List<util.File> getFileList(int meetingId, int roleId)
        {
            Dictionary<string, object> dict = new Dictionary<string, object>();
            dict["meetingId"] = meetingId;
            dict["roleId"] = roleId;
            string str = WebUtil.post("/file/getFileList", dict);
            return JsonConvert.DeserializeObject<List<util.File>>(str);
        }

4月19日下午和负责后端的同学进行了联调,排除了连接过程的编码缺陷。

此外对仓库进行了更新,将之前由于疏忽而遗漏的生成文件目录加入进了gitignore中并更新了git的index,同时新开了release_client等分支,使仓库结构更加合理。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值