2个版本
0.0.2 | 2020年9月30日 |
---|---|
0.0.1 | 2020年9月30日 |
#1747 in 嵌入式开发
31KB
747 代码行
Drogue IoT HTTP客户端
基于#![no_std]
环境,无需分配器的嵌入式系统HTTP客户端。
待办事项
注意:虽然说是“HTTP”,但意思是“可能被解释为HTTP的东西”。它远非一个完整的HTTP 1.1客户端。
- 处理错误
- 实现分块编码
- 等等…
示例
const ENDPOINT: &'static str = "my-host";
fn send() -> Result<(),()> {
// socket from drogue-network, maybe with TLS
let mut tcp = TcpSocketSinkSource::from(network, socket);
let con = HttpConnection::<U1024>::new();
let data = r#"{"temp": 1.23}"#;
// response implementation with buffer
let handler = BufferResponseHandler::<U1024>::new();
// create and execute request
let mut req = con
.post("/publish/telemetry")
.headers(&[("Host", ENDPOINT), ("Content-Type", "text/json")])
.handler(handler)
.execute_with::<_, consts::U512>(&mut tcp, Some(data.as_bytes()));
tcp.pipe_data(&mut req)
.map_err(|_| ThingError::FailedToPublish)?;
let (con, handler) = req.complete();
log::info!(
"Result: {} {}, Payload: {:?}",
handler.code(),
handler.reason(),
from_utf8(handler.payload())
);
// you can do the next call with the returned `con`
}
依赖项
~1MB
~24K SLoC