在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方法的工具类,在安卓应用中很多都需要跟服务器进行数据交互,这需要两方面的配合,首先服务器端会给应用提供一些数据交互的接口,可是怎样在应用中去调用呢 ...
随机推荐
- 阿里CEO张勇公开信:把眼光从股市回到客户身上
8月25日消息,面对全球资本市场的剧烈波动,阿里巴巴集团CEO张勇今日发表致员工信,倡议全体阿里员工把眼光从股市回到客户身上,脚踏实地的服务帮助客户,为客户创造价值,继而为股东和自己创造价值. 张 ...
- php 常用代码段
1.写文件 $fp = fopen("jsapi_ticket.json", "w+"); fwrite($fp, $str); fclose($fp); 2. ...
- JavaScript中typeof和instanceof深入详解
这次主要说说javascript的类型判断函数typeof和判断构造函数原型instanceof的用法和注意的地方. typeof 先来说说typeof吧.首先需要注意的是,typeof方法返回一个字 ...
- Angular - - $sce 和 $sceDelegate
$sce $sce 服务是AngularJs提供的一种严格上下文转义服务. 严格的上下文转义服务 严格的上下文转义(SCE)是一种需要在一定的语境中导致AngularJS绑定值被标记为安全使用语境的模 ...
- jQuery trigger one用法
jQuery trigger one用法: <%@ page language="java" import="java.util.*" pageEncod ...
- POJ2115(扩展欧几里得)
C Looooops Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 23700 Accepted: 6550 Descr ...
- 【ci框架基础】之部署百度编辑器
在ci框架下加载编辑器,现在复习下内容.我的框架文件名称为ci 1.下载百度编辑器ueditor,http://ueditor.baidu.com/ 一般情况下下载ubuilder版即可,并将uedi ...
- Windows 10 IoT Core环境配置中的那些坑
我使用的设备是Raspberry Pi 3B,想来国内的嵌入式玩具应该还是树莓派最常见吧.这段时间一直在捣鼓Win10 IoT,结果发现,从安装一直到编码调试一路下来全都是坑.写这篇东西一个是为了备忘 ...
- Java连接数据库(mysql,sqlserver)
犹记当年为了使用java程序连接mysql数据库花费一天时间,最后发现是没有导入外包,如今看来真的发现自己那时有点二,也怪我使用的教科书上没有说明这点(强行甩锅,哈哈).今天分享出来,,希望后者不因为 ...
- 《JAVASCRIPT高级程序设计》第五章(1)
引用类型是一种将数据和功能组合到一起的数据结构,它与类相似,但是是不同的概念:ECMAScript虽然是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和结构等基本结构.引用类型也被称为“对 ...