在Signalr的Hub中写方法实现与安卓的数据交互
简介:
实现数据实时刷新:SignalR
后台服务:.NET/WebAPI
为了减轻web的压力,将接口中接收数据的方法写到SignalR的Hub中
在此放一小段代码给自己加深下印象,博主有点健忘......
/// <summary>
/// 向客户端发送照片上传的结果
/// </summary>
/// <param name="imageInfo">JSON字符串</param>
public void HhtUpCarInfo(string imageInfo)
{
//var声明一个变量,接收Base64StringToFile() 的返回值
var uploadImageResult = Base64StringToFile(imageInfo);
//然后通过Clients.All.Base64StringToFile(uploadImageResult)将结果返回给移动端
Clients.All.Base64StringToFile(uploadImageResult);
}
/// <summary>
/// 上传照片
/// </summary>
/// <param name="imageInfo"></param>
/// <returns>图片的相对路径</returns>
public string Base64StringToFile(string imageInfo)
{
//通过多次实验发现SignalR中只能接收安卓上传的字符串格式,所以在这里调用了博主自己的类库中一个将JSON转换成对象的方法来接收参数
CarInfoImageDto carInfoImage = JsonHelper.DeserializeByNewton<CarInfoImageDto>(imageInfo);
//调用博主自己的类库中将Base64String转换成图片的方法
return DecodeBase64.Base64StringToFile(carInfoImage.Base64String, carInfoImage.FileType);
}
/// <summary>
/// 将JSON字符串转换为C#对象
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="json"></param>
/// <returns></returns>
public static T DeserializeByNewton<T>(string json)
{
return JsonConvert.DeserializeObject<T>(json);
}
/// <summary>
/// 上传图片信息
/// </summary>
/// <param name="base64String">Base64字符串</param>
/// <param name="fileType">文件类型</param>
/// <returns>如果保存成功,会返回文件的相对路径;否则返回空值</returns>
public static string Base64StringToFile(string base64String, string fileType)
{
string virtualPath = string.Format("/File/{0:yyyyMMddhhmmss}.{1}", DateTime.Now, fileType);
string physicalPath = HttpContext.Current.Server.MapPath(virtualPath);
if (!string.IsNullOrEmpty(base64String) && !File.Exists(physicalPath))
{
byte[] imageBytes = Convert.FromBase64String(base64String);
MemoryStream memoryStream = new MemoryStream(imageBytes, 0, imageBytes.Length);
memoryStream.Write(imageBytes, 0, imageBytes.Length);
Image image = Image.FromStream(memoryStream);
image.Save(physicalPath);
return virtualPath;
}
return "上传失败";
}
在上面的代码示例中可以深入了解SignalR与客户端数据的传输特点以及交互的实现。
关于SignalR实现页面实时刷新的的功能可以去看一下博主SignalR分类下的文章,你会对SignalR有一个更深刻的认识。
在Signalr的Hub中写方法实现与安卓的数据交互的更多相关文章
- 使用bs4中的方法爬取星巴克数据
import urllib.request # 请求url url = 'https://www.starbucks.com.cn/menu/' # 模拟浏览器发出请求 response = urll ...
- SpringMVC入门(二)—— 参数的传递、Controller方法返回值、json数据交互、异常处理、图片上传、拦截器
一.参数的传递 1.简单的参数传递 /* @RequestParam用法:入参名字与方法名参数名不一致时使用{ * value:传入的参数名,required:是否必填,defaultValue:默认 ...
- Silverlight中如何自己写方法将DataTable转换为PagedCollectionView数据(动态创建类)
将DataTable转换为PagedCollectionView数据,我们可以借用DataTable的GetBindableData()方法,如下: DataTable dt=new DataTabl ...
- JS-对象中写方法
- aspx 页面中 js 引用与页面后台的数据交互 --【 后台调用 js 】
js 中调用后台方法 一.用Response.Write方法 Response.Write("<script type='text/javascript'>alert(&qu ...
- aspx 页面中 js 引用与页面后台的数据交互 --【 js 调后台】
后台调用 js 方法 前台调用后台方法与变量: 后台被调用的方法必须是public 或 protected 后台被调用的方法必须是静态的static 方法一:通过WebService来实现 步骤: ...
- 使用AIDL远程调用服务中的方法
AIDL:android interface define language(接口定义语言) 作用:方便远程调用其他服务中的方法 注意:安卓四大组件都要在清单文件注册 aidl创建图: AIDL的全称 ...
- 五、React事件方法(自写一个方法(函数),然后用按钮onClick触发它、自写方法改变this指向3种写法、
上接:https://www.cnblogs.com/chenxi188/p/11782349.html 项目目录: my-app/ README.md node_modules/ package.j ...
- 分享两个模拟get和post方法的工具类,让应用能够与服务器进行数据交互
很久没有码字了,今天跟大家分享一个模拟get和post方法的工具类,在安卓应用中很多都需要跟服务器进行数据交互,这需要两方面的配合,首先服务器端会给应用提供一些数据交互的接口,可是怎样在应用中去调用呢 ...
随机推荐
- 直播流怎么存储在Ceph对象存储上? Linux内存文件系统tmpfs(/dev/shm) 的应用
一./dev/shm理论 默认的Linux发行版中的内核配置都会开启tmpfs,映射到了/dev/下的shm目录.可以通过df 命令查看结果./dev/shm/是linux下一个非常有用的目录,因为这 ...
- js 验证文本框只能输入数字和小数点
第一步.添加js方法 function check(e) { var re = /^\d+(?=\.{0,1}\d+$|$)/ if (e.value != "") ...
- 主成分分析PCA(转载)
主成分分析PCA 降维的必要性 1.多重共线性--预测变量之间相互关联.多重共线性会导致解空间的不稳定,从而可能导致结果的不连贯. 2.高维空间本身具有稀疏性.一维正态分布有68%的值落于正负标准差之 ...
- AnsiIO
1.文件数据内容,元数据内容 i节点ls -l err.txt-rw-rw-r-- 1 csgec csgec 50 Jun 23 11:19 err.txt-:普通文件(文件类型)rw-:属主用户拥 ...
- C++ 常量类型 const 详解
1.什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的.(当然,我们可以偷梁换柱进行更新:) 2.为什么引入const? const 推出的初始目的 ...
- jquery checkbox全选 获取值
<style> table { line-height:35px; }</style> <div align="left" style="m ...
- POJ1200(hash)
Crazy Search Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 27536 Accepted: 7692 Des ...
- ArcGIS API for JavaScript 4.2学习笔记[3] 官方第二章Mapping and Views概览与解释
目录如下: 连接:第二章 Mapping and Views 根据本人体会, [这一章节主要是介绍地图(Map)和视图(View)的.] 其中,Get started with MapView(2D) ...
- 《JAVASCRIPT高级程序设计》第四章
javascript变量是松散类型,它只是在特定时间表示特定值的一个名字而已:变量的值以及类型,可以在脚本的生命周期内改变.变量的类型,分为基本类型和引用类型两种,具体介绍如下图所示: 执行环境是Ja ...
- Tomcat的安装配置与JavaWeb入门教程
本文开发环境: windos7 , Eclipse-mars , JDK1.7 , Tomcat7.0 1.关于Tomcat 先来看一段Tomcat的介绍: Tomcat是Apache 软件基金会(A ...