通过 reqwest 的请求需要一个长轮询响应,因此我创建了一个字节流并尝试将每个块反序列化为 JSON。我立即意识到这是错误的,因为每个块都可能不完整,因此反序列化可能会失败;即使一些块被反序列化为 JSON,它们中的大多数都失败了。我该怎么做呢?
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = reqwest::Client::new();
let mut stream = client
.get("https://...")
.send()
.await?
.bytes_stream();
while let Some(chunk) = stream.next().await {
match serde_json::from_slice::<Value>(&chunk?){
Ok(value) => println!("OK: {:?}", value),
Err(e) => println!("ERROR: {:?}", e),
}
};
Ok(())
}