You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用hyper 0.14通过TLS发送POST请求出现类型不匹配该如何解决?

错误原因

你声明的client类型为client::Client<_, hyper::Body>,要求传入的请求必须是Request<Body>类型,你构造请求时调用.body(())传入了单元类型(),导致请求类型为Request<()>,与客户端要求的参数类型不匹配,因此触发类型错误。

修复方案
  • 无请求体的场景:将body参数替换为Body::empty()即可,修改后的请求构造代码如下:
let req = Request::builder().method(Method::POST)
    .uri("url")
    .body(Body::empty())
    .unwrap();
  • 有请求体的场景:将需要发送的内容转换为Body类型传入即可,例如发送JSON请求体的写法:
let req = Request::builder().method(Method::POST)
    .uri("url")
    .header("Content-Type", "application/json")
    .body(Body::from(r#"{"key":"value"}"#))
    .unwrap();

额外注意:你代码中的match分支写法存在错误,client.request().await返回的是Result<Response<Body>, hyper::Error>类型,不存在Method、TooLarge的直接分支匹配,你可以通过hyper::Error::is_parse()、hyper::Error::is_payload_too_large()等方法判断错误类型做对应处理。


内容的提问来源于stack exchange,提问作者Abhilash Gopalakrishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:39:05