在Http标题中使用Json字符串

最近我遇到了一个奇怪的问题,http头的使用(添加多个自定义http请求头神秘)为了避免在那个时候的问题,我已经把字段放入json字符串,并将该json字符串添加到头,而不是将这些字段添加到单独的http标题。

例如,而不是

request.addHeader("UserName", mUserName);
request.addHeader("AuthToken", mAuthorizationToken);
request.addHeader("clientId","android_client");

我创建了一个json字符串并将其添加到单个标题

String jsonStr="{"UserName":"myname","AuthToken":"123456","clientId":"android_client"}";
request.addHeader("JSonStr",jsonStr);

由于我是新来的休息和处理Http的东西,我不知道我的用法是否正确。 我希望对此有所了解。

一些链接

http://lists.w3.org/Archives/Public/ietf-http-wg/2011OctDec/0133.html


是的 ,JSON在HTTP标头中是允许的。

根据HTTP规范(它引用标题格式的ARPA互联网消息规范),唯一的限制是你的头域字段必须是ASCII,并且不能包含CR或LF字符(即新行)。

由于几乎所有的JSON编码器都会将CR和LF字符编码为“ r”和“ n”,并编码非ASCII字符(例如“é”变为“ u00e9”),所以这不是问题。 请确认您的编码器的文档。

前面提到的ARPA规范(RFC 822)对这个确切的用例有特殊的描述:

标题的某些字段体可以根据某些系统可能希望解析的内部语法来解释。 这些字段被称为“结构化字段”。

另外,RFC 822明确指出没有长度限制:

为了便于阅读,长头字段的字段 - 主体部分可以“折叠”到实际字段的多行上。 “长”通常被解释为意味着超过65或72个字符。 当使用简单的显示软件的最简单的终端上查看消息时,前一长度用作限制; 然而,这个标准并没有强加这个限制。


一般来说,您不会在REST API的标头中发送数据。 如果您需要发送大量数据,最好使用HTTP POST并发送请求正文中的数据。 但它看起来像你试图传递头文件中的凭证,这是一些REST API的使用。 下面是一个将REST API中的证书传递给名为SMSIfied的服务的示例,该服务允许您通过Internet发送SMS文本消息。 此示例使用基本身份验证,这是REST API的常用技术。 但是,您需要使用SSL技术才能确保安全。 这里是一个关于如何使用WCF和REST实现基本认证的例子。


根据我的理解,在头部选项中使用json字符串并不像使用http GET的http DELETE那样滥用用法,因此甚至有人建议在http头部中使用json。 当然,更深入的见解仍然值得欢迎,而且我们仍然接受答案。

链接地址: http://www.djcxy.com/p/71341.html

上一篇: Using Json string in the Http Header

下一篇: Secure rest api for application