Rust 使用 reqwest 发送 POST 请求并解析 JSON 响应
use std::{io, collections::HashMap};
use reqwest::header::HeaderMap;
#[tokio::main]
async fn main() {
// let input_buf=get_user_input();
// println!('{}',input_buf);
match send_post().await {
Ok(res)=>{println!('{:#?}',res)}
Err(e)=>{eprintln!('{:?}',e)}
}
}
//获取用户键盘输入
fn _get_user_input() -> String {
let mut input_buf = String::new();
let _input = io::stdin().read_line(&mut input_buf).expect('fail to get user input.');
input_buf
}
async fn send_post() -> Result<serde_json::Value, reqwest::Error> {
let client = reqwest::Client::new();
//post 请求头
let mut header = HeaderMap::new();
header.insert('User-Agent',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/110.0.0.0 Safari/537.36'.parse().expect('unsolve the userAgent header value.'),
);
header.insert('referer', 'https//www.covery.com'.parse().expect('unsolve the referer value.'));
header.insert('sec-ch-ua', 'sec-ch-ua'.parse().expect('ms'));
// post 请求体
let mut data = HashMap::new();
data.insert('prompt', 'hello');
let response = client.post('https://free-api.cveoy.com/v3/completions')
.headers(header)
.json(&data)
.send()
.await?;
let text = response.text().await?; // 打印返回的数据
println!('Response text: {:?}', text);
Ok(response.json::<serde_json::Value>().await?)
}
reqwest::Error { kind: Decode, source: Error('trailing characters', line: 2, column: 1) }
提示这个错误,该如何解决,怎么回事
这个错误提示是请求返回的数据不能被解码为 JSON 格式,可能是因为请求的 API 返回的数据格式不是 JSON 或者格式不正确。可以尝试打印出返回的数据,查看其格式,或者检查 API 文档中返回数据的格式要求。如果返回数据不是 JSON 格式,可以尝试使用其他格式的数据进行解码,比如 XML 或者文本格式。如果返回数据格式正确,但仍然无法解码,可以尝试使用其他的 JSON 库进行解码,或者联系 API 提供方寻求帮助。
那怎么打印出返回的数据啊,我该如何修改代码内容:
可以在 `send_post` 函数中添加以下代码,用于打印返回的数据:
```rust
let response = client.post('https://free-api.cveoy.com/v3/completions')
.headers(header)
.json(&data)
.send()
.await?;
let text = response.text().await?; // 打印返回的数据
println!('Response text: {:?}', text);
let json = response.json::<serde_json::Value>().await?;
Ok(json)
这样就可以先打印出返回的原始数据,再尝试解码成 JSON 格式,方便排查问题。如果返回的数据格式正确,但无法解码为 JSON 格式,可以尝试查看 API 文档中数据格式的要求。
原文地址: https://www.cveoy.top/t/topic/lBMX 著作权归作者所有。请勿转载和采集!