Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BufferedReader未从HttpsURLConnection读取整个JSON_Java_Android_Json - Fatal编程技术网

Java BufferedReader未从HttpsURLConnection读取整个JSON

Java BufferedReader未从HttpsURLConnection读取整个JSON,java,android,json,Java,Android,Json,我试图从网站上读取JSON文本;我有网址,而且连接很好。我目前的代码是: BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream())); String input; while ((input = br.readLine()) != null){ JSONObject j = new

我试图从网站上读取JSON文本;我有网址,而且连接很好。我目前的代码是:

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做日志时,我看到它在中途被切断了。我认为这可能与input或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.I/OpenGLRenderer:初始化的EGL,版本1.4 05-14 17:37:29.210 3707-3707/asundar.E/回收视图:未连接适配器;跳过布局 05-14 17:37:29.240 3707-3707/asundar.E/回收视图:未连接适配器;跳过布局

安全方式:

   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();
编辑


基本上,响应是完整的(基于您发送的代码),您面临的问题只是日志文本限制响应太长无法打印日志,这就是输出崩溃的原因

首先,尝试卷曲URL,查看服务器发送的内容


其次,如果您认为这与缓冲区大小有关,请将HttpsURLConnection换成ApacheHttpClient之类的连接,并从那里开始。

As JSONParser将在运行时以parser.parse的形式抛出错误,以解决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
        }

我试过你的方法,但日志上什么也没显示。我创建了一个对主帖子的编辑来反映这一点。在我的示例中,我从未在这里放置日志。您可以对其进行修改并添加日志进行确认。e、 g.
Log.d(“jsontest”,j.toString())下面
JSONObject j..
我做了,日志根本没有显示出来。它反映在编辑中。我放置了一个日志,但没有显示任何内容。如果您不介意,请私下将您的api发送给我,我的电子邮件在我的个人资料中。
RecyclerView:没有连接适配器。
这可能是另一个问题。这是另一个问题。我加了日志以防万一。现在这不是我的问题。我还没有在RecyclerView中添加任何内容。如果是这样的话,日志在您当前的版本中是不相关的。。。。你不能假设你读到的每一行都是一个完整的JSON对象,除非你对服务器的了解比这里透露的要多。我确实感到惊讶的是,显然没有提供从输入流或读取器构造
JSONObject
的方法。cURL仍然只打印出JSON的一半。这是一个非常长的JSON文本。使用Apache会做什么,我将如何使用它?如果cURL只打印了一半,那么我会说服务器只发送了响应的一部分。因此,当我执行一个非Android项目并在Java中执行System.out.println()时,它打印了整个响应。我怎么能得到这整件事呢?可能是服务器超时慢读。服务器的行为可能会因代理字符串的不同而有所不同(例如)。