Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 为什么来自api.color.pizza的reqwest响应返回意外字节?_Http_Rust_Reqwest - Fatal编程技术网

Http 为什么来自api.color.pizza的reqwest响应返回意外字节?

Http 为什么来自api.color.pizza的reqwest响应返回意外字节?,http,rust,reqwest,Http,Rust,Reqwest,我试图解析来自GET请求的响应,但输出似乎是随机字节 此问题仅在我尝试此网站()时发生,并且在尝试其他网站时响应与预期一致 在浏览器中测试,我知道正确的响应,当比较正确响应的字节(存储在变量k中)和来自reqwest的响应时,字节完全不同 再现错误的代码如下所示: fn main() -> Result<(), Box<dyn std::error::Error>> { //Expected output let k = r##"{"colors":

我试图解析来自GET请求的响应,但输出似乎是随机字节

此问题仅在我尝试此网站()时发生,并且在尝试其他网站时响应与预期一致

在浏览器中测试,我知道正确的响应,当比较正确响应的字节(存储在变量
k
中)和来自reqwest的响应时,字节完全不同

再现错误的代码如下所示:

fn main() -> Result<(), Box<dyn std::error::Error>> {
    //Expected output
    let k = r##"{"colors":[{"hex":"#123120","name":"Méi Hēi Coal","rgb":{"r":18,"g":49,"b":32},"requestedHex":"#123123","luminance":29.48870965301805,"distance":3}]}"##;

    let request_url = "https://api.color.pizza/v1/123123";
    let resp = reqwest::blocking::get(request_url)?.text()?;

    println!("{}", resp);

    let r1 = resp.into_bytes();
    let r2 = String::from(k).into_bytes();
    assert_eq!(&r1[..], &r2[..]);

    Ok(())
}
服务器总是压缩输出,即使客户机没有请求

您可以通过以下方式看到这一点:

$curl-i'https://api.color.pizza/v1/123123' 
HTTP/1.1200ok
服务员:牛仔
连接:保持活力
访问控制允许来源:*
访问控制允许方法:GET
访问控制允许凭据:false
访问控制最大年龄:86400
访问控制允许标头:X-Requested-With、X-HTTP-Method-Override、内容类型、接受
内容编码:gzip
内容类型:application/json;字符集=utf-8
日期:2020年5月6日星期三19:04:47 GMT
传输编码:分块
Via:1.1维格尔
警告:二进制输出可能会弄乱终端。使用“-output-”来说明
警告:卷曲输出到你的终端,或考虑“-输出”
警告:“保存到文件。
要解决此问题,您需要使用
reqwest
启用
gzip

fn main()->结果{
//预期产量
设k=r####{“colors”:[{“hex”:“#123120”,“name”:“Méi Hēi Coal”,“rgb”:{“r”:18,“g”:49,“b”:32},“requestedHex”:“#123123”,“亮度”:29.48870965301805,“距离”:3}”;
让请求_url=”https://api.color.pizza/v1/123123";
让resp=reqwest::blocking::ClientBuilder::new()
.gzip(正确)
.build()?
.get(请求\u url)
.send()?
.text()?;
println!(“{}”,resp);
设r1=分别为_字节();
设r2=String::from(k).into_bytes();
断言(r1[…]和r2[…]);
好(())
}
它需要
gzip
功能:

[dependencies]
reqwest = { version = "*", features = ["blocking", "gzip"] }