【问题标题】:java parsing json messages in http stream [closed]java解析http流中的json消息[关闭]
【发布时间】:2018-01-05 22:36:26
【问题描述】:
import aiohttp
import requests

listen_url = "https://somehttpstreamingurl"
headers = {"User-Agent": "stream client"}


async def async_listen():
    with aiohttp.ClientSession() as session:
        async with await session.get(url=listen_url, headers=headers) as r:
            while True:
                message = await r.content.readline()
                if message:
                    print(message)


def sync_listen():
    with requests.session() as session:
        r = session.send(requests.Request(method="GET", url=listen_url, headers=headers), stream=True)
        for message in r.iter_lines():
            if message:
                print(message)

这是我们如何在 Python 中从 http 流中获取数据的两个示例(我使用的是 3.6)

但是在 Java 中我似乎无法做到这一点,并且每次进行的 google 搜索我都会获得服务器端流相关的结果或文件流上传作为结果。 我想编写与上面的 Python 代码等效的 Java 代码,但是在搜索 Java 时,http 流搜索非常混乱,在搜索查询中添加“android”关键字时更糟。 有谁知道如何完成上面 Python 代码的 Java 等效项?

【问题讨论】:

  • 您需要一个Thread 对象、一个回调接口和一个while 循环。你用这个扩展尝试了什么?此外,Android 上的 HTTP 流式传输只是让您的电池耗尽
  • 也许 RxJava 可以帮助github.com/ReactiveX/…
  • 我的 api 端点使用 http 流,但是 RxJava 看起来很有前途,谢谢

标签: java android python http http-streaming


【解决方案1】:

如果你想监听传入的请求,首先你需要阅读消息文本,然后进行任何解析。

Java 教程有一个典型的例子:

在 StackOverflow 中也有很多关于这个用例的问题,例如:

【讨论】:

  • 问题是关于连续流,不过
  • Java 教程中的 BufferedReader 就是这样做的:它会在有数据的同时继续读取。
  • 谢谢,我认为缓冲区阅读器应该这样做,但问题。在我的情况下,我正在从流中检索数据以附加到列表视图,考虑到这一点,使用 ths 或在对问题的评论中提出的 RxJava 解决方案会更明智
  • 一般原则是,如果“plain vanilla”解决方案满足需要,则应遵循该解决方案。换句话说,玩它,你会弄明白的。 :-)
  • 好的,非常感谢这个帮助
猜你喜欢
  • 1970-01-01
  • 2011-08-18
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多