首页 > 解决方案 > 在 Android 上接收文件

问题描述

我在使用函数 sendFile 发送文本文件的服务器上有一个 Javascript 代码。使用来自终端的 curl,一切正常,我可以看到发送的文件的内容。我需要从 Android 应用程序中做同样的事情(我没有从头开始设计应用程序,所以我必须使用相同的架构/结构)。

Android 应用程序应该从服务器接收一个文本文件(使用 sendFile 发送)。我确实为收到的数据建立了一个模型,我想象收到的内容是一个列表(字符串)。我最终遇到了一个例外:

retrofit.RetrofitError: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 1 行第 1 列路径 $

如何构建我的模型以接收对象?我现在的模型是这样的:

public class UsedModel {

    public List<String> msg;
}

看来 sendFile 没有发送 Json 格式。像这样的 curl 调用(来自 linux 机器):

curl --request GET  -H 'Content-Type: application/json' server_address/api/getApiWithSendFile | json_pp

基本回归

格式错误的 JSON 字符串,既不是数组、对象、数字、字符串也不是原子,位于 /usr/bin/json_pp5.18 第 45 行的字符偏移量 0(在“从服务器接收到的文本...”之前)。

所以看起来我没有收到 Json ......这是问题吗?

有什么建议吗?

我想避免以其他方式修改 javascript 服务器端。

谢谢

标签: javascriptandroidrest

解决方案


如果您收到错误消息:

retrofit.RetrofitError: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 预期 BEGIN_OBJECT 但在第 1 行第 1 列路径 $

意味着您收到的响应不是Json Object,请确保您的响应返回类似{...},以{左大括号开头并以}右大括号结尾的内容。


推荐阅读