< 返回版块

Nayaka 发表于 2022-08-31 12:47

Reqwest是不是不支持带URL参数的POST?

let client = reqwest::ClientBuilder::new()
        .gzip(true)
        .deflate(true)
        .brotli(true)
        .build()
        .unwrap();

let response = client.request(Method::POST, "http://abc.com/app/create?app_key=1231245")
        .body(body)
        .send()
        .await
        .unwrap()

会提示app_key为空, 请教一下Reqwest是否有其他方式可实现POST至带URL参数,谢谢

评论区

写评论
pinylin 2022-08-31 19:31

不知道有gzip,br这几个feature, 我还自己写的decode, 2333

作者 Nayaka 2022-08-31 16:03

十分感谢,晚点试下

--
👇
ShallmentMo: 试试看

let response = client.request(Method::POST, "http://abc.com/app/create").query(("app_key", "12345"))
        .body(body)
        .send()
        .await
        .unwrap()
作者 Nayaka 2022-08-31 16:03

道理我都懂,这第三方接口(还是某大厂)这么搞我们也没法[叹气],

现在通过Hyper实现了,同时带QueryString和RequestBody,就是Hyper没有对应的解压(gz,br,deflate)方法,只能修改Accept-Encoding头

用Reqwest主要是为了方便gz,br,deflate这几个

感谢回复

--
👇
c5soft: Reqwest支持Post一点问题也没有。

出现所述问题应该是后台未能正确解析,把app_key放在url中要求后台从QueryString中去获取数据。后台拿不到app_key的值可能是后台从Body中去获取数据了。

一般发送post请求,应避免将参数放在url中,应将参数放置到body中,这里没有长短限制。

c5soft 2022-08-31 14:21

Reqwest支持Post一点问题也没有。

出现所述问题应该是后台未能正确解析,把app_key放在url中要求后台从QueryString中去获取数据。后台拿不到app_key的值可能是后台从Body中去获取数据了。

一般发送post请求,应避免将参数放在url中,应将参数放置到body中,这里没有长短限制。

ShallmentMo 2022-08-31 14:14

试试看

let response = client.request(Method::POST, "http://abc.com/app/create").query(("app_key", "12345"))
        .body(body)
        .send()
        .await
        .unwrap()
1 共 5 条评论, 1 页