生 rust :请求发布请求失败-声明正文中未提供Grant_Type(MIME为application/x-www-form-urlencoded)

lztngnrs  于 2023-03-30  发布在  其他
关注(0)|答案(1)|浏览(129)

我在向Reqwest传递数据时遇到问题。我正在使用serde_urlencoded为POST请求创建字符串。我收到下面的错误。我已经确认我使用curl请求的数据是正确的。它让我相信我的主体或标题是不正确的。
有人能帮助我理解这个请求出了什么问题吗?
错误:{\"error\":\"unsupported_grant_type\",\"error_description\":\"grant_type parameter is missing\"}
Vec<u8> body and HeaderMap == Hashmap<String, Vec<String>>

// application/x-www-form-urlencoded Mime type body
    let body = serde_urlencoded::to_string([
        ("grant_type", "authorization_code"),
        ("code", "authcode"),
        ("redirect_uri", "redirect.com"),
        ("code_verifier", "workingVerifier" ),
        ("client_id", "SomeID"),
        ("client_secret", "SomeSecret"),
    ])?;

    let body = serde_json::to_vec(&body)?;

 let mut headers: HeaderMap = HeaderMap::new();
    headers.insert(
        "Authorization".to_string(),
        vec![format!("Basic {}", generate_auth_string(conf).await?)],
    );
    headers.insert(
        "Content-Type".to_string(),
        vec!["application/x-www-form-urlencoded".to_string()],
    );

Reqwest

let response = reqwest::Client::new()
            .request(method, &req.url)
            .headers(headers)
            .body(body)
            .send()
            .await
vlju58qv

vlju58qv1#

Per @kmdreko我需要改变我的身体不使用serde_json。
let body = body.as_bytes().to_vec();

相关问题