首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Reqwest可能没有检测到我的URL,请求没有发送请求

Reqwest可能没有检测到我的URL,请求没有发送请求
EN

Stack Overflow用户
提问于 2022-08-18 21:30:24
回答 1查看 52关注 0票数 1

reqwest在试图发送post请求时给出了以下错误:

代码语言:javascript
复制
Error: Response { url: Url { scheme: "https", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("eastus.tts.speech.microsoft.com")), port: None, path: "/cognitiveservices/v1", query: None, fragment: None }, status: 400, headers: {"date": "Thu, 18 Aug 2022 21:48:56 GMT", "transfer-encoding": "chunked", "connection": "keep-alive", "strict-transport-security": "max-age=15724800; includeSubDomains"} }

使用以下代码:

代码语言:javascript
复制
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {

    let url: String = "https://eastus.tts.speech.microsoft.com/cognitiveservices/v1".to_string();

    let body: String = format!(r#"
    <speak version='\''1.0'\'' xml:lang='\''en-US'\''>
    <voice xml:lang='\''en-US'\'' xml:gender='\''Female'\'' name='\''en-US-SaraNeural'\''>
        my voice is my passport verify me
    </voice>
</speak>
"#);




    let res = Client::new()
        .post(url)
        .header( "Ocp-Apim-Subscription-Key", "mySecretKeyIAmWritingThisHereForSecurity")
        .header(CONTENT_TYPE, "application/ssml+xml")
        .header("X-Microsoft-OutputFormat","audio-16khz-128kbitrate-mono-mp3")
        .header(USER_AGENT, "curl")
        .body(body)
        .send().await?;

    println!("Status Code: {:?}", res.status());
    Ok(())
}

这很奇怪,因为上面写着cannot_be_a_base: false, username: "",但我不需要这样的东西.此外,如果通过带有CURL的命令行发送到Azure,则发送到Azure的数据可以工作。

我想要达到的目标,我的处境:

代码语言:javascript
复制
curl --location --request POST "https://eastus.tts.speech.microsoft.com/cognitiveservices/v1" \
--header "Ocp-Apim-Subscription-Key: myKEYgoesHERE" \
--header 'Content-Type: application/ssml+xml' \
--header 'X-Microsoft-OutputFormat: audio-16khz-128kbitrate-mono-mp3' \
--header 'User-Agent: curl' \
--data-raw '<speak version='\''1.0'\'' xml:lang='\''en-US'\''>
    <voice xml:lang='\''en-US'\'' xml:gender='\''Female'\'' name='\''en-US-SaraNeural'\''>
        stop it
    </voice>
</speak>' > output.mp3

我想把卷曲变成生锈的东西.所以

代码语言:javascript
复制
#[tokio::main]
async fn main() -> Result<(), reqwest::Error> {

    let url: String = "https://eastus.tts.speech.microsoft.com/cognitiveservices/v1".to_string();

    let body: String = format!(r#"
    <speak version='\''1.0'\'' xml:lang='\''en-US'\''>
    <voice xml:lang='\''en-US'\'' xml:gender='\''Female'\'' name='\''en-US-SaraNeural'\''>
        my voice is my passport verify me
    </voice>
</speak>
"#);




    let res = Client::new()
        .post(url)
        .header( "Ocp-Apim-Subscription-Key", "MYkey")
        .header(CONTENT_TYPE, "application/ssml+xml")
        .header("X-Microsoft-OutputFormat","audio-16khz-128kbitrate-mono-mp3")
        .header(USER_AGENT, "curl")
        .body(body)
        .send().await?;

    println!("OOO {:?}", res);
    Ok(())
}

我相信我错过了这里的位置旗,但我不认为这是问题所在。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-18 22:17:18

您使用的字符串转义语法与在curl示例中使用的相同,但锈蚀字符串和shell字符串是不同的东西,不同的语法。curl命令的最终结果是,每个'\''只对单个'进行编码。您不需要在一个生锈的文本(如')中转义r#""#,只需将它们直接包含在您希望它发送的内容中:

代码语言:javascript
复制
let body = format!(r#"
    <speak version='1.0' xml:lang='en-US'>
        <voice xml:lang='en-US' xml:gender='Female' name='en-US-SaraNeural'>
            my voice is my passport verify me
        </voice>
    </speak>
"#);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73409646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档