android - 从 Android 使用 WCF REST 服务非常慢

标签 android asp.net-mvc rest binary

我有一个用 C# 构建的 WCF REST 服务,它返回一个图像作为 CPU 密集型操作的一部分。客户端在 Android (Java) 上运行,默认情况下,它将返回一个文本 JSON 对象,如下所示:

{"d",[9,0,77,12,11,...]}

这些是图像的字节。美好的。然而,所有解码此 JSON 的解决方案都慢得无法忍受。我试过 Gson、Jackson 和内置的 Android JSONObject 类。我不知道他们为什么这么慢。

作为替代解决方案,我让我的 REST 服务返回一个 GUID,然后 Android 客户端可以使用该 GUID 转到一个常规 URL,该 URL 通过 MVC Controller 将图像作为常规二进制流提供。

这很好用,而且速度很快,而且在 Android 端很容易处理。然而,它确实感觉有点乱七八糟,有点违反 REST 设计原则。

我是不是漏掉了什么?有更好的方法吗?

最佳答案

您的 REST 服务如何返回重定向 303,其中 Location header 具有指向图像的 URL?或者为什么不直接从第一个 URL 返回字节?

就 REST 与否而言,返回 JSON 编码图像并不完全符合 REST 自描述性约束的精神。

只需确保返回字节图像流的端点在内容 header 中实际使用 image/* 媒体类型即可。

关于android - 从 Android 使用 WCF REST 服务非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3612561/

相关文章:

安卓工作室 : Dependency issues

android - 在Android中将宽幅图片翻译为背景

java - 用于棋盘游戏的 Libgdx 网络

c# - 当 ICollection 为空时,Linq 查询返回结果。

java - 服务器-客户端应用程序中的 Spring Data 分页

android - 如何在 Parse.com Rest Api 请求上使用 Client Key 而不是 Android 的 Rest Api Key

android - 希望购买 Android NFC 标签

asp.net-mvc - 我可以更改由Html.DropDownListFor生成的html名称吗?

c# - 如何从数据库值生成选择列表?

java api REST 客户端出现 POST 错误 : no suitable HttpMessageConverter