作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前在客户端使用 Java 1.4.2 与 Rails 3 服务器通信。当我们最初设计通信时,所有返回的信息都是 ASCII(字母数字),因此我们将使用 JSON 并将其作为映射返回。现在我们发现还需要返回二进制数据(图像),但我们不想发出两个 HTTP 请求。
在一个 HTTP 响应中发送现有 ASCII 信息和二进制数据的最佳方式是什么?我目前的想法是使用 base64 或十六进制编码,但我不知道这是否是最好的方法。在服务器(Ruby)端编码和在客户端(Java 1.4.2)解码的简单方法也是一个巨大的优势。
最佳答案
HTTP 协议(protocol)允许以 multipart/mixed
形式返回响应。这样做时,响应被划分为零个或多个部分,每个部分由边界分隔。每个部分(可以)都有自己的 header ,描述该部分的内容(Content-Type、Content-Length、Content-Disposition 等)。因此,响应中的一部分可以是 ASCII 文本,另一部分可以是八位字节流。
使用此响应类型可能是在一次 HTTP 调用中发回混合内容的最佳选择,但需要您对 Rails 代码进行一些修改。
特别注意,如果您有基于浏览器的客户端使用相同的服务器服务,则并非所有浏览器都能正确处理多部分/混合
响应。
关于java - 如何在一个 HTTP 响应中同时发送 ASCII 和二进制数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8797536/
我是一名优秀的程序员,十分优秀!