Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.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 HTTP响应正文泄漏。。。但从不明确使用响应体?_Java_Android_Https_Network Programming_Httpresponse - Fatal编程技术网

Java HTTP响应正文泄漏。。。但从不明确使用响应体?

Java HTTP响应正文泄漏。。。但从不明确使用响应体?,java,android,https,network-programming,httpresponse,Java,Android,Https,Network Programming,Httpresponse,我正在Android Studio中开发一个应用程序,它从REST API读取信息,在客户端解析信息,然后显示信息。到目前为止,一切正常,没有崩溃,但我一直收到以下日志警告: W/OkHttpClient:与的连接https://.com/ 被泄露了。您忘记关闭响应正文了吗?我有一个cleanup()函数,可以关闭我的InputStream和JsonReader,如您所见,我确保断开我的HTTPS连接。这是我唯一使用任何类型的网络逻辑的地方。我还需要关闭什么 protected static

我正在Android Studio中开发一个应用程序,它从REST API读取信息,在客户端解析信息,然后显示信息。到目前为止,一切正常,没有崩溃,但我一直收到以下日志警告:
W/OkHttpClient:与的连接https://.com/ 被泄露了。您忘记关闭响应正文了吗?
我有一个
cleanup()
函数,可以关闭我的
InputStream
JsonReader
,如您所见,我确保断开我的HTTPS连接。这是我唯一使用任何类型的网络逻辑的地方。我还需要关闭什么

 protected static JsonReader getAPI(String endpointURL) {
    JsonReader jsonReader = null;
    try {
        URL url = new URL(endpointURL);
        // Create connection
        myConnection = (HttpsURLConnection) url.openConnection();
        if (myConnection.getResponseCode() == 200) {
            // Success
            // Further processing here
            InputStream inp = myConnection.getInputStream();
            try {
                jsonReader = new JsonReader(new InputStreamReader(inp, "UTF-8"));
                jsonReader.setLenient(true);
                //inp.close();
            } catch (Exception e) {
                Log.i("Serverside", inp.toString());
            }
        } else {
            // Error handling code goes here
            //hits here if no events! this is okay
            Log.i("Serverside", "URLConnection");
        }
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (Exception e) {
        System.out.println("Error " + e.getMessage());
    }
    finally {
        myConnection.disconnect();
    }
    return jsonReader;
}
编辑:以下是日志片段:

03-31 06:59:16.758 15809-15809/com.rsenapp.triage I/Fix error: back pressed
03-31 06:59:16.785 15809-15924/com.rsenapp.triage V/FA: Recording user engagement, ms: 8279
03-31 06:59:16.785 15809-15924/com.rsenapp.triage V/FA: Connecting to remote service
03-31 06:59:16.798 1596-1609/? E/memtrack: Couldn't load memtrack module
03-31 06:59:16.799 1596-1609/? W/android.os.Debug: failed to get memory consumption info: -1
03-31 06:59:16.811 15809-15924/com.rsenapp.triage V/FA: Activity paused, time: 15659169
03-31 06:59:16.822 15809-15924/com.rsenapp.triage D/FA: Logging event (FE): user_engagement(_e), Bundle[{firebase_event_origin(_o)=auto, engagement_time_msec(_et)=8279, firebase_screen_class(_sc)=EventviewActivity, firebase_screen_id(_si)=-579304082464371239}]
03-31 06:59:16.870 15809-15924/com.rsenapp.triage V/FA: Connection attempt already in progress
03-31 06:59:19.396 15809-15934/com.rsenapp.triage I/Serverside: URLConnection
03-31 06:59:19.402 15809-15934/com.rsenapp.triage I/System.out: [Ljava.lang.StackTraceElement;@34c53
03-31 06:59:20.579 15809-15934/com.rsenapp.triage I/Serverside: URLConnection
03-31 06:59:20.581 15809-15934/com.rsenapp.triage I/System.out: [Ljava.lang.StackTraceElement;@ddaf990
03-31 06:59:21.571 15809-15934/com.rsenapp.triage I/Serverside: URLConnection
03-31 06:59:21.573 15809-15934/com.rsenapp.triage I/System.out: [Ljava.lang.StackTraceElement;@3a65289
03-31 06:59:21.792 1390-1528/? W/audio_hw_generic: Not supplying enough data to HAL, expected position 6962632 , only wrote 6714000
03-31 06:59:23.019 15809-15884/com.rsenapp.triage W/OkHttpClient: A connection to https://rsenapp.com/ was leaked. Did you forget to close a response body?
03-31 06:59:23.020 15809-15884/com.rsenapp.triage I/chatty: uid=10082(com.rsenapp.triage) OkHttp Connecti identical 9 lines
03-31 06:59:23.020 15809-15884/com.rsenapp.triage W/OkHttpClient: A connection to https://rsenapp.com/ was leaked. Did you forget to close a response body?
03-31 06:59:23.589 1596-1658/? I/InputDispatcher: Application is not responding: AppWindowToken{c65626d token=Token{8968a84 ActivityRecord{2677897 u0 com.rsenapp.triage/.MainActivity t49}}}.  It has been 5006.8ms since event, 5003.5ms since wait started.  Reason: Waiting because no window has focus but there is a focused application that may eventually add a window when it finishes starting up.
03-31 06:59:23.590 1596-1658/? I/WindowManager: Input event dispatching timed out sending to application AppWindowToken{c65626d token=Token{8968a84 ActivityRecord{2677897 u0 com.rsenapp.triage/.MainActivity t49}}}.  Reason: Waiting because no window has focus but there is a focused application that may eventually add a window when it finishes starting up.
03-31 06:59:23.620 1596-1658/? W/InputDispatcher: Asynchronous input event injection timed out.
03-31 06:59:23.724 15809-15809/com.rsenapp.triage I/Serverside: [com.rsenapp.triage.Event@9ed128e, com.rsenapp.triage.Event@d6c5aaf, com.rsenapp.triage.Event@d1e1ebc, com.rsenapp.triage.Event@4988e45, com.rsenapp.triage.Event@eabc99a, com.rsenapp.triage.Event@dadf2cb, com.rsenapp.triage.Event@70c6aa8, com.rsenapp.triage.Event@eb8c9c1, com.rsenapp.triage.Event@e6ce566, com.rsenapp.triage.Event@526f0a7, com.rsenapp.triage.Event@7118954]
03-31 06:59:23.724 15809-15809/com.rsenapp.triage I/EventList: Current Event: rtCatpcha: Video, voice, and smarts for secure authentication
03-31 06:59:23.724 15809-15809/com.rsenapp.triage I/EventList: Current Event: Distributed Algorithms for Pattern Matching in Massive Labelled Graphs
03-31 06:59:23.724 15809-15809/com.rsenapp.triage I/EventList: Current Event: Privacy, Security, Internet, and the Coming Clash of Cultures
03-31 06:59:23.724 15809-15809/com.rsenapp.triage I/EventList: Current Event: Joshua Sorenson: Solving the Biggest Problems 
03-31 06:59:23.724 15809-15809/com.rsenapp.triage I/EventList: Current Event: More Data, More Science and… Moore’s Law?
请注意,在警告消息周围出现的堆栈跟踪是预期的——它们会被打印出来,因为当我们在所有API路由中循环时,有时会到达尚未共享信息的列表(例如,没有当前事件的组)。此外,目前,每次屏幕更改都会完全刷新数据——我们不存储在屏幕之间传递的数据。每当显示带有API拉取数据的屏幕时,警告都会持续出现

另一个编辑:以下是类字段以及它们如何通过清理方法关闭:

public class JSONParser {

    private static HttpsURLConnection myConnection;
    private static InputStream inp;
    private static JsonReader jsonReader;

    private static void cleanup() {
        if (inp != null) {
            try {
                inp.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (jsonReader != null) {
            try {
                jsonReader.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

也许这个答案可以帮助你发布更多与警告相关的日志?需要阅读日志以查看有何错误。@我尝试用尽可能多的相关信息更新日志-日志非常混乱,但我尝试将它们与警告消息发生的位置隔离。确定。告诉我一件简单的事,兄弟。你在项目中使用OKHttp吗?@Ash字面上没有。至少不是直接使用。我似乎只使用了
HttpsURLConnection。
正如我所说,我发布的是客户端唯一的网络代码。后端数据库/服务器端可能有问题吗?这两个方面是非常不同的,由完全不同的人组成。