客户端(包括浏览器)通过HTTP协议与服务端交换数据的描述

发起请求

header

键值对中的key大小写不敏感

  • Accept: application/json

  • Content-Type:

    • x-www-form-urlencoded
    • form-data
    • application/json
  • X-CLIENT-ID: 客户端id

  • X-TIMESTAMP: 客户端unix时间戳

  • X-SIGN: 客户端签名(可选)

另外需要实现Cookie机制

method
  • 写请求使用POST
  • 读请求使用GET
body
  • GET 没有body
  • POST 根据Content-Type的不同来决定Body的格式

处理响应

header

键值对中的key大小写不敏感

  • Status:

    • 200 操作成功
    • 400 请求有问题;如:表单、客户端id、客户端时间戳验证失败等
    • 401 认证失败。
    • 403 无访问权限。
    • 404 请求的资源不存在。
    • 409 请求处理完成但因为业务规则限制或其他原因并未真正成功的响应
    • 500 服务器错误
    • 503 服务器维护中
body

JSON数据,因为Accept中只约定了application/json

{"code":系统代码(409响应时,提供一个唯一的系统代码),"msg":返回值说明,"payload":业务数据}

业务数据中凡是约定返回JSON数组的情况,无结果时返回空数组,禁止NULL

签名机制

  1. 用请求参数生成键值对,键值对为“参数名=参数值”;其中上传文件的参数值为文件内容sha1结果的小写形式。
  2. 所有键值对按照键自然排序,然后用“&”连接为内容字符串。
  3. 使用内容字符串生成待签名字符串,如“内容内容{应用ID}时间戳时间戳{应用密钥}”。

    注意:${}表示占位符。

  4. 待签名字符串用sha1生成签名,结果忽略大小写。

客户端通过HTTP协议与服务端交换数据的更多相关文章

  1. winform 客户端采用HTTP协议与服务端通信

    本来从来没有仔细研究过Http协议,今天因为公司业务需求,调试了半天,终于现在会Winform用Http协议与服务端通信了,其中常用的有POST和Get方式: 仔细看了人人网和新浪等大部分都是采用GE ...

  2. 使用rsync在linux(客户端)拉取windows(服务端)数据

    windows 服务端ip:172.18.18.70 Linux客服端ip: 172.18.54.11 1.windows服务端下载cwRsync Server , 地址:https://www.ba ...

  3. winform 客户端 HTTP协议与服务端通信以及解决中文乱码

    本来从来没有仔细研究过Http协议,今天因为公司业务需求,调试了半天,终于现在会Winform用Http协议与服务端通信了,其中常用的有POST和Get方式: 仔细看了人人网和新浪等大部分都是采用GE ...

  4. java 网络编程基础 TCP/IP协议:服务端ServerSocket;客户端Socket; 采用多线程方式处理网络请求

    1.Java中客户端和服务器端通信的简单实例 Java中能接收其他通信实体连接请求的类是ServerSocket,ServerSocket对象用于监听来自客户端的Socket连接,如果没有连接,它将一 ...

  5. WebSocket安卓客户端实现详解(三)–服务端主动通知

    WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ...

  6. (8)Linux(客户端)和Windows(服务端)下socket通信实例

    Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows   Client端 #include <st ...

  7. 基于NIO的同步非阻塞编程完整案例,客户端发送请求,服务端获取数据并返回给客户端数据,客户端获取返回数据

    这块还是挺复杂的,挺难理解,但是多练几遍,多看看研究研究其实也就那样,就是一个Selector轮询的过程,这里想要双向通信,客户端和服务端都需要一个Selector,并一直轮询, 直接贴代码: Ser ...

  8. 编写Java程序,使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的场景(用户充当客户端,QQ 小冰充当服务端)

    查看本章节 查看作业目录 需求说明: 小冰是微软公司研发的人工智能机器人,被腾讯公司加入 QQ 群后,立即受到千万网友的喜爱.现在使用 Socket类模拟用户加入 QQ 群时,QQ 小冰发送欢迎消息的 ...

  9. Diango之通过form表单向服务端发送数据

    通过form表单向服务端发送数据 表单元素 表单:form></form>表单用于向服务器传输数据.另外一种向服务端传输数据的方式为ajax. form属性: action:提交表单 ...

随机推荐

  1. kafka 监控(eagle)

    topic:创建时topic名称 partition:分区编号 offset:表示该parition已经消费了多少条message logSize:表示该partition已经写了多少条message ...

  2. haproxy 非常完整的配置

    常用配置选项: OPTION 选项: option httpclose :HAProxy会针对客户端的第一条请求的返回添加cookie并返回给客户端,客户端发送后续请求时会发送 此cookie到HAP ...

  3. struts2(六) 文件上传和下载

    前面对文件下载提过一点点,这里正好要讲文件上传,就放在一起在说一遍. --WH 一.单文件上传 在没学struts2之前,我们要写文件上传,非常麻烦,需要手动一步步去获取表单中的各种属性,然后在进行相 ...

  4. 使用ASIHTTPRequest和ASIDownloadCache实现本地缓存

    源码:http://files.cnblogs.com/ios8/ASIHttpRequestDemo2.zip NSURL *url = [NSURLURLWithString:@"htt ...

  5. 修改PS1变量

    PS1='\[\e[7;46m\]\u\[\e[0m\]@\[\e[0;32m\]\h\[\e[0m\]:\[\e[0;34m\]\w\[\e[0m\]\$ ' from: http://profes ...

  6. 期权、RSU的区别与行权事宜

    科普一下常见的股票.期权.股票增值权.虚拟股票等常见的激励方式,以及在兑换或行权的一些相关问题.股票(Stock): 股票市场也称权益市场,是专门对股票进行公开交易的市场,包括股票的发行和转让,分为一 ...

  7. zabbix 对/etc/ssh/sshd_config文件的监控 但status为unknowen

    原因为该文件没有被访问的权限: # ll /etc/ssh/sshd_config -rw------- root root Apr : /etc/ssh/sshd_config 授权后再看: [ro ...

  8. EditText: 自定义EditText 触摸时无法获取焦点

    写了一个自定义View,继承EditText,但是在触摸时无法获取到焦点. 在XML中添加 android:focusableInTouchMode="true" 设置触摸时可以获 ...

  9. 【Linux技术】linux库文件编写·入门

    一.为什么要使用库文件 我们在实际编程中肯定会遇到这种情况:有几个项目里有一些函数模块的功能相同,实现代码也相同,也是我们所说的重复代码.比如,很多项目里都有一个用户验证的功能. 代码段如下: //U ...

  10. spark编译报错信息简介

    spark编译需要环境 git java1.+ maven R 报错信息1: [INFO] ------------------------------------------------------ ...