我试图从网站上读取JSON文本;我有URL,它连接正常。我目前的代码是:
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
String input;
while ((input = br.readLine()) != null){
JSONObject j = new JSONObject(input);
Log.d(TAG,j.toString(4));
}
br.close();
但是,它无法从整个HttpsURLConnection中读取JSON。为Android做日志我看到它已经中途停止了。我认为它可能与输入或BufferedReader的大小有关,但我不确定如何继续。
编辑:这是日志
在第一个建议之后仍然没有得到它。
05-14 17:37:29.070 3707-3755/asundar.sharks D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
[ 05-14 17:37:29.070 3707: 3707 D/ ]
HostConnection::get() New Host Connection established 0x7f0411c26ec0, tid 3707
[ 05-14 17:37:29.120 3707: 3755 D/ ]
HostConnection::get() New Host Connection established 0x7f040937e280, tid 3755
05-14 17:37:29.140 3707-3755 / asundar.sharks I / OpenGLRenderer:初始化的EGL,版本1.4 05-14 17:37:29.210 3707-3707 / asundar.sharks E / RecyclerView:没有连接适配器;跳过布局 05-14 17:37:29.240 3707-3707 / asundar.sharks E / RecyclerView:没有连接适配器;跳过布局
答案 0 :(得分:1)
由于JSONParser会在运行时因为JSON漂亮打印问题而解析为“文件结束异常”的解析错误。
您可以尝试以下逻辑。
String output;
JSONObject jsonObject = null;
StringBuilder stBuild = new StringBuilder();
JSONParser parser = new JSONParser();
LOGGER.debug("conn: {}", conn);
// fetching NC response in form of buffer reader.
BufferedReader br = new BufferedReader(new
InputStreamReader((conn.getInputStream())));
// reading line using bufferReader
while ((output = br.readLine()) != null) {
// parsing string into object.
stBuild.append(output);
Object obj = parser.parse(stBuild.toString());
jsonObject = (JSONObject) obj;
// casting object into JSONObject
}
答案 1 :(得分:0)
安全的方式:
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuilder b = new StringBuilder();
String input;
while ((input = br.readLine()) != null){
b.append(input);
}
JSONObject j = new JSONObject(b.toString());
// this should be in finally block
br.close();
修改强>
基本上响应已满(根据您发送的代码而定),您面临的问题只是 Logcat文本限制。 Logcat打印的响应太长,这就是为什么你在输出中崩溃的原因。
答案 2 :(得分:0)
首先,尝试CURLing URL查看服务器发送的内容。
其次,如果您认为它与缓冲区大小有关,请将Apache HttpClient之类的内容替换为HttpsURLConnection并从那里开始。