reqwest::Error { 种类:解码,来源:错误("expected value",行:1,列:1)}'
reqwest::Error { kind: Decode, source: Error("expected value", line: 1, column: 1) }'
我在创建此 POST 请求时收到以下错误。我是 RUST 的新手。
而不是 serde_json::Value
我什至尝试 HashMap<String, String>
仍然是同样的问题。
如果你能告诉我我的 headers 是否有误,或者我该如何追踪它是否真的是网络请求问题?
这是我期待的实际响应。 Session
我已经尝试将 serde_json::Value 替换为 Session 仍然没有效果,错误仍然存在。
#[derive(Debug, Deserialize, Serialize)]
pub struct Session {
pub platform_type: String,
pub ticket: String,
pub profile_id: String,
pub user_id: String,
pub name_on_platform: String,
pub expiration: String, //2020-08-26T16:46:59.4772040Z
}
我正在使用 Popos 20.04 和 Rust 1.45.2
pub async fn login(&self) -> Result<serde_json::Value, reqwest::Error> {
let response = self.client
.post(request_url)
.headers(self.construct_headers())
.basic_auth(self.email.clone(), Some(self.password.clone()))
.send().await?
.json::<serde_json::Value>().await?;
Ok(response)
}
fn construct_headers(&self) -> HeaderMap {
let mut headers = HeaderMap::new();
headers.insert("ubi-appid", HeaderValue::from_str(self.ubi_config.appid.as_str()).unwrap());
headers.insert(USER_AGENT, HeaderValue::from_static("reqwest"));
headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/json"));
headers
}
这只会给我以下错误:
reqwest::Error { kind: Decode, source: Error("expected value", line: 1, column: 1) }'
[dependencies]
serenity = "0.9.0-rc.0"
reqwest = "0.10.8"
tokio = { version = "0.2.22", features = ["full"] }
serde = {version = "1.0.114", features = ["derive"]}
serde_json = "1.0.57"
dotenv = "0.15.0"
config = "0.10.1"
谢谢。
我提取了回复。这就是我得到的。
let response = self.client
.post(request_url)
.headers(self.construct_headers())
.basic_auth(self.email.clone(), Some(self.password.clone()))
.send().await?;
println!("Status: {}", response.status());
println!("Status: {:#?}", response.text().await?);
Status: 411 Length Required
Status: "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<HTML><HEAD><TITLE>Length Required</TITLE>\r\n<META HTTP-EQUIV=\"Content-Type\" Content=\"text/html; charset=us-ascii\"></HEAD>\r\n<BODY><h2>Length Required</h2>\r\n<hr><p>HTTP Error 411. The request must be chunked or have a content length.</p>\r\n</BODY></HTML>\r\n"
下面的东西修复了它,在 fn construct_headers 下添加
headers.insert(CONTENT_LENGTH, HeaderValue::from_static("0"));
我在创建此 POST 请求时收到以下错误。我是 RUST 的新手。
而不是 serde_json::Value
我什至尝试 HashMap<String, String>
仍然是同样的问题。
如果你能告诉我我的 headers 是否有误,或者我该如何追踪它是否真的是网络请求问题?
这是我期待的实际响应。 Session
我已经尝试将 serde_json::Value 替换为 Session 仍然没有效果,错误仍然存在。
#[derive(Debug, Deserialize, Serialize)]
pub struct Session {
pub platform_type: String,
pub ticket: String,
pub profile_id: String,
pub user_id: String,
pub name_on_platform: String,
pub expiration: String, //2020-08-26T16:46:59.4772040Z
}
我正在使用 Popos 20.04 和 Rust 1.45.2
pub async fn login(&self) -> Result<serde_json::Value, reqwest::Error> {
let response = self.client
.post(request_url)
.headers(self.construct_headers())
.basic_auth(self.email.clone(), Some(self.password.clone()))
.send().await?
.json::<serde_json::Value>().await?;
Ok(response)
}
fn construct_headers(&self) -> HeaderMap {
let mut headers = HeaderMap::new();
headers.insert("ubi-appid", HeaderValue::from_str(self.ubi_config.appid.as_str()).unwrap());
headers.insert(USER_AGENT, HeaderValue::from_static("reqwest"));
headers.insert(CONTENT_TYPE, HeaderValue::from_static("application/json"));
headers
}
这只会给我以下错误:
reqwest::Error { kind: Decode, source: Error("expected value", line: 1, column: 1) }'
[dependencies]
serenity = "0.9.0-rc.0"
reqwest = "0.10.8"
tokio = { version = "0.2.22", features = ["full"] }
serde = {version = "1.0.114", features = ["derive"]}
serde_json = "1.0.57"
dotenv = "0.15.0"
config = "0.10.1"
谢谢。
我提取了回复。这就是我得到的。
let response = self.client
.post(request_url)
.headers(self.construct_headers())
.basic_auth(self.email.clone(), Some(self.password.clone()))
.send().await?;
println!("Status: {}", response.status());
println!("Status: {:#?}", response.text().await?);
Status: 411 Length Required
Status: "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"\"http://www.w3.org/TR/html4/strict.dtd\">\r\n<HTML><HEAD><TITLE>Length Required</TITLE>\r\n<META HTTP-EQUIV=\"Content-Type\" Content=\"text/html; charset=us-ascii\"></HEAD>\r\n<BODY><h2>Length Required</h2>\r\n<hr><p>HTTP Error 411. The request must be chunked or have a content length.</p>\r\n</BODY></HTML>\r\n"
下面的东西修复了它,在 fn construct_headers 下添加
headers.insert(CONTENT_LENGTH, HeaderValue::from_static("0"));