gpt4 book ai didi

Android - 如何打开接收分块响应的持久 HTTP 连接?

转载 作者:可可西里 更新时间:2023-11-01 16:46:48 25 4
gpt4 key购买 nike

我正在尝试建立到 API 端点的持久 HTTP 连接,该端点在新事件发生时发布分块 JSON 响应。我想提供每次服务器发送新数据 block 时调用的回调,并无限期地保持连接打开。据我所知,HttpClientHttpUrlConnection 均未提供此功能。

有没有一种方法可以不使用 TCP 套接字来完成此操作?

最佳答案

一种解决方案是使用诸如 \n\n 之类的分隔符来分隔每个 json 事件。您可以在发送前从原始 json 中删除空行。调用 setChunkedStreamingMode(0) 允许您在内容进入时读取内容(而不是在缓冲整个请求之后)。然后您可以简单地遍历每一行,存储它们,直到到达空白行,然后将存储的行解析为 JSON。

HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setChunkedStreamingMode(0);
conn.connect();

InputStream is = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sBuffer = new StringBuffer();
String line;
while ((line = reader.readLine()) != null) {
if (line.length() == 0) {
processJsonEvent(sBuffer.toString());
sBuffer.delete(0, sBuffer.length());
} else {
sBuffer.append(line);
sBuffer.append("\n");
}
}

关于Android - 如何打开接收分块响应的持久 HTTP 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25395556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com