我遇到了以下问题,我暂时陷入困境,不知道问题是什么
我收到错误
org.json.JSONException:字符1526处未终止的对象,如下面的响应字符串打印
并按照我的方法
HTTPResponse
有人可以告诉我这里有什么问题吗?
答案 0 :(得分:0)
最可能的问题是您使用错误的字符编码来读取流。
这样的一行代码:
Reader objectReader = new InputStreamReader(response.getEntity().getContent());
总是很危险,因为您没有明确指定要使用的字符集。
你可以试试这个:
Reader objectReader = new InputStreamReader(response.getEntity().getContent(), "UTF-8");
如果您知道您的服务器正在发送UTF-8内容。
处理此问题的最佳方法是阅读响应中的Content-Type
标题,如下所示:
Content-Type: application/json; charset=UTF-8
在“charset =”之后解析字符串并将其作为字符集名称传递。
实际上,您正在指定服务器所说的字符集。
但要小心:charset参数是可选的,可能不存在。
作为极端后备,您可以捕获JSONException
并使用不同的编码重试解析。您必须在某处缓冲响应,以便重新读取它。