当前位置: 首页 > 知识库问答 >
问题:

无法在get请求的响应头中显示内容编码

丌官晔
2023-03-14

我试图编写一个空手道测试来验证特定响应头是否包含值为gzip的Content-Encoding头字段。我试过我的api,但这两次空手道的响应中都没有内容编码字段。这两个endpoint都在postman和curl命令上返回了content-encoding字段。

Feature: test getting Content-Encoding

  Background:
    * url 'https://postman-echo.com/gzip'

  Scenario:
    Given header Accept-Encoding = 'gzip'
    When method get
    Then status 200
    And match responseHeaders contains {'Content-Encoding':'#present'}
1 > GET https://postman-echo.com/gzip
1 > Accept-Encoding: gzip
1 > Connection: Keep-Alive
1 > Host: postman-echo.com
1 > User-Agent: Apache-HttpClient/4.5.12 (Java/1.8.0_252)

反应看起来像是

1 < 200
1 < Connection: keep-alive
1 < Content-Type: application/json; charset=utf-8
1 < Date: Fri, 08 May 2020 16:18:42 GMT
1 < ETag: W/"ef-7kclc8pzXTvQiPUaEOf6j95iFaE"
1 < Vary: Accept-Encoding
1 < set-cookie: sails.sid=s%3A6G_FShPRZH4V1G-tVDfUEEfMwQQmolo5.T2Cb37zqYA21FTyRyIGutVWQWo9ta4EWiod36%2FkM88I; Path=/; HttpOnly
{
  "gzipped": true,
  "headers": {
    "x-forwarded-proto": "https",
    "x-forwarded-port": "443",
    "host": "postman-echo.com",
    "x-amzn-trace-id": "Root=1-5eb58662-c4aaeec26efd116ac0544a18",
    "accept-encoding": "gzip",
    "user-agent": "Apache-HttpClient/4.5.12 (Java/1.8.0_252)"
  },
  "method": "GET"
}

curl响应标头为

curl --location --request GET 'https://postman-echo.com/gzip' \
> --header 'Accept-Encoding: gzip' -I

HTTP/2 200 
date: Fri, 08 May 2020 16:21:53 GMT
content-type: application/json; charset=utf-8
content-length: 220
content-encoding: gzip
etag: W/"dc-BuD8DN1qXT7trYUQtZOuSvbq1pM"
vary: Accept-Encoding
set-cookie: sails.sid=s%3Aj86lznX3nK20fnEN4B3nbHESrfWqVJ3M.236VrsmQp7V%2F7%2BrvG%2FEtlc9yUVLTtylh1yyIAdQJSiY; Path=/; HttpOnly

共有1个答案

龚国源
2023-03-14

这似乎是Apache HttpClient的工作方式,或者是为空手道配置它的方式。我刚刚发现你用karate-jersey得到了标题:

1 > GET https://postman-echo.com/gzip
1 > Accept: */*
1 > Accept-Encoding: gzip
1 > User-Agent: Jersey/2.30 (HttpUrlConnection 1.8.0_231)

22:40:48.981 [ForkJoinPool-1-worker-1] DEBUG com.intuit.karate - response time in milliseconds: 1177.37
1 < 200
1 < Connection: keep-alive
1 < Content-Encoding: gzip
1 < Content-Length: 248
1 < Content-Type: application/json; charset=utf-8
1 < Date: Fri, 08 May 2020 17:10:48 GMT
1 < ETag: W/"f8-sigbV4PuNI2Fx08AqzMEqW1WIYY"
1 < Vary: Accept-Encoding

所以如果泽西在你剩下的测试中没问题,也许这就是你所需要的。让它在karate-apache中工作对我来说并不是一个优先事项,所以如果您或其他任何人愿意调查或修复它,那就太好了。

 类似资料:
  • 问题内容: 我正在尝试在Elasticsearch上执行简单的“请求正文搜索”,如以下示例所示,但使用.NET而不是curl 下面是我的.NET代码。 但是,我收到以下错误。 有什么方法可以使用标准.NET类发送带有请求的内容主体。还是有解决方法? 问题答案: 将更改为解决方法。 MSDN声明,如果使用or 方法调用该方法,则将引发a 。

  • Im正在尝试从浏览器发送get请求到我的后端(node+express)。但不知何故我的头部似乎没有设置好。 前面是这样的: 在后端,我尝试启用自定义头: 我已经试过类似问题的答案,但没有一个奏效。 当我打印服务器收到的报头时,我得到:

  • 当使用Chrome或Opera的默认控制台检查请求头时,我可以在请求头中看到哪些cookie已经发送到服务器,如果服务器正在尝试设置cookie,我还可以看到Set-Cookie头。 但是,在Safari 7.1.2中,我没有看到这些信息,但看到了其他信息,如Accept、User-Agent、Referer等。 我是否需要启用某些功能来查看Safari控制台中的Cookie?如何查看与请求一起发

  • 我正在使用Apache Camel将数据从CSV文件加载到webservice。我是否可以显示请求和响应。以下是路线配置。。 我从数组中拆分并聚合100个项目,以作为邮件正文发送。 请让我知道如何使用上述路线显示请求和响应?

  • 我有一个简单的java spring方法来创建对象 无法提取响应:找不到响应类型[class Address]和内容类型[text/plain;charset=UTF-8]的合适的HttpMessageConverter 因此,我认为,我需要更改响应头内容类型,以正确的application/JSON,以便MappingJackson2HttpMessageConverter找到JSON字符串并运

  • 主要内容:1 HTTP Request Header请求头,2 HTTP Response Header 响应头本文列出了日常开发中常见的请求头和响应头,以供大家参考。 1 HTTP Request Header请求头 Header 说明 示例 Accept 指定客户端能够接收的内容类型 Accept: text/plain, text/html  Accept-Charset 浏览器可以接受的字符编码集。 Accept-Charset: iso-8859-5  Accept-Encoding