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

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

我的想法:后台将数据(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. [Robot Framework] 怎么做数学运算?

    运用BuiltIn里面的Set Variable

  2. mongoDB(Window)

    1.启动命令 mongod --dbpath F:\mongo\data             注:dbpath路径不能有空格,我开始用F:\Program Files,就因为有一个空格,失败了. ...

  3. qr 生成二维码

    package com.common; import com.swetake.util.Qrcode; import jp.sourceforge.qrcode.QRCodeDecoder; impo ...

  4. 数据库之mysql练习

    建表 部门表 #DROP IF EXISTS TABLE DEPT; CREATE TABLE DEPT( DEPTNO int PRIMARY KEY,##部门编号 DNAME VARCHAR(14 ...

  5. mysql数据库的安装和基本使用

    一.数据库安装配置 1)数据库的概念 .数据库相关概念 数据库服务器(本质就是一个台计算机,该计算机之上安装有数据库管理软件的服务端) 数据库管理管理系统RDBMS(本质就是一个C/S架构的套接字软件 ...

  6. MVCS框架的注意点

    1.Service最好用一个接口对应一个service(便于增加扩展方法) 2.除Services和Model外都需继承自各自对应的父类 3.View不要轻易重写Start和Awake方法(含与启动有 ...

  7. yyparse() and yylex()

    Yacc 与 Lex 快速入门 yyparse() returns a value of 0 if the input it parses is valid according to the give ...

  8. warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOKEY

    问题: yum安装软件时候报如下错误: warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID fd431d51: NOK ...

  9. javascript 获取用户当前 经纬度 位置

    <!DOCTYPE html> <html> <body><p>http协议支持部分浏览器</p><p>https支持所有浏览器 ...

  10. java 块语句 和引用类型

    1.java中存在块语句,块语句分为四种 1.静态块 2.普通块 3.构造块 4.同步块 静态块的执行时机是在class文件装载的时候;静态块只会执行一次, 多个静态块的时候,按出现顺序执行,存放类的 ...