今天工作中遇到了一个情景:

前端向后台发送一个请求,希望后台返回一组数据,由于后台返回的数据量很大,希望尽可能压缩响应的大小

我的想法:后台将数据(Short的数组)直接转换成Byte[]  然后将byte[]发送至前端。

传统的Json是将数据序列化成Json文件在发送到前端,这样做的好处是处理简单,但是数据转换成字符串发送时数据量会变大

举个例子:一个short类型的数据  256 ,如果用字节数组直接发送,只需要2个字节,但如果转换成字符串 ,则需要四个字节:'2','5','6',','。(注:Json是使用‘,’来分割数据的)。

背景陈述完了,我的思路:其实我的需求和后端发送一个图片的需求是一致的,图片必须按照字节数组传输,所以百度了一下,找到了下面的链接:

https://my.oschina.net/smartsmile/blog/815496

核心代码:

var resp = new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new ByteArrayContent(b),
StatusCode = HttpStatusCode.OK

};
return resp;

这样处理后,前端收到的数据就是字节数组了

后端处理完成后,前端使用Ajax请求时,使用ArrayBuffer接收数据无法初始化,没办法,继续百度,然后就有了下面的处理方法:

var oReq = new XMLHttpRequest();
oReq.open("GET", "http://localhost:11784/api/test", true);
oReq.responseType = "arraybuffer";
oReq.onload = function (oEvent) {
var arrayBuffer = oReq.response; 
if (arrayBuffer) {
var byteArray = new Int16Array(arrayBuffer);

};
oReq.send(null);

WebAPI中发送字节数组的更多相关文章

  1. java中把字节数组转换为16进制字符串

    把字符串数组转换为16进制字符串 import java.security.MessageDigest; public class StringUtil { public StringUtil() { ...

  2. java中判断字节数组的编码方式是不是UTF-8

    1,用google的工具包,配置maven: <!-- https://mvnrepository.com/artifact/com.googlecode.juniversalchardet/j ...

  3. 使用 mina 传输大字节数组

    转载自:http://seara520.blog.163.com/blog/static/16812769820103214817781/ 使用mina传输超过2k以上的数据时(采用tcp方式,如果是 ...

  4. [19/04/01-星期一] IO技术_字节流分类总结(含字节数组(Array)流、字节数据(Data)流、字节对象(Object)流)

    一.字节流分类概括 -->1.ByteArrayInputStream /ByteArrayOutputStream(数组字节输入输出)        InputStream/OutputStr ...

  5. Java之ByteArrayInputStream和ByteArrayOutputStream-操作字节数组的类

    ByteArrayInputStream和ByteArrayOutputStream 源:内存中的字节数组 目的:内存中的字节数组 这两个流对象不涉及底层资源的调用,操作的都是内存中的数组,所以不需要 ...

  6. Java IO学习笔记(三)转换流、数据流、字节数组流

    转换流 1.转换流:将字节流转换成字符流,转换之后就可以一个字符一个字符的往程序写内容了,并且可以调用字符节点流的write(String s)方法,还可以在外面套用BufferedReader()和 ...

  7. C# Socket发送接收字节数组和十六16进制之间转换函数

    近期在使用远程网络模块的时候, 需要用的Socket发送数据,远程模块指令为16进制. 官方提供的DEMO比较繁琐.不方便新手使用. 下面的转换函数可大大方便新手使用. // 16进制字符串转字节数组 ...

  8. C#中结构体定义并转换字节数组

    最近的项目在做socket通信报文解析的时候,用到了结构体与字节数组的转换:由于客户端采用C++开发,服务端采用C#开发,所以双方必须保证各自定义结构体成员类型和长度一致才能保证报文解析的正确性,这一 ...

  9. C#中字节数组(byte[])和字符串相互转换

    转换过程主要使用到System.Text.Encoding命名空间下的类 1. 字符串转换成字节数组byte[]: string str = "This is test string&quo ...

随机推荐

  1. 学习C语言以及C语言基础调查

    学习声乐的心得 你有什么技能比大多人(超过90%以上)更好?   就我个人而言,在所有的兴趣之中,做得比较好的应该属于声乐. 针对这个技能的获取你有什么成功的经验?   我对于声乐处始于兴趣,成功的经 ...

  2. vitas高音

    http://music.163.com/#/song/19674656?userid=65416848

  3. tomcat与jmeter

    jmeter无法提取出Tomcat之外的其他服务器的指标. 为了克服这一现状,研发了一个服务器代理,jmeter通过这个代理来获取性能数据. 代理使用的是sigar开源库,他是一个java通过部分和一 ...

  4. tomcat+bean例子

    C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\app\WEB-INF\classes\文件夹下 建立beanTestPa ...

  5. DB2 sql报错后查证原因与解决问题的方法

    1.对于执行中的报错,可以在db2命令行下运行命令 : db2=>? SQLxxx 查看对应的报错原因及解决方法. 2.错误SQL0206N SQLSTATE=42703  检测到一个未定义的列 ...

  6. Select isnull(,)

    类似于 select isnull(...,1) from table 这样的 isnull函数防止查询结果为空,防止接下来需要这个值时可能造成空指针异常

  7. 3、iOS Xcode创建protocol(代理).h文件

  8. idea关于tab的设置

    新手使用,一不小心tab显示在右面了,这不学习下给搞正常点. settings===>Editor=====>Editor Tabs; Palacement设置的是tab显示的部位: Ta ...

  9. php mysqli 链接数据库 CURD 增改查删

    <?php function println($msg) { echo "<br>"; echo $msg; } $mysql_server_name = &qu ...

  10. 批处理最完整人性化教程(.bat文件语法)

    原文链接:http://www.cnitblog.com/seeyeah/archive/2009/01/15/53808.html 这是一篇技术教程,我会用很简单的文字表达清楚自己的意思,你要你识字 ...