问题现象

调试或者压测时出现406。

可能原因

在调试时,请求出现406报错,一般是请求构建的Header中的Accept字段设置错误导致的。

Image170

Accept代表发送端(在这里表示PTS)希望接受的数据类型。

Content-Type代表发送端(在这里表示PTS)发送的实体数据的数据类型。在PTS里Body中设置的Content-Type会自动同步到Header中。如果Header中的Accept不符合事先约定的内容,就会返回406错误。

Accept

解决方案

需要确认服务端能验证通过的Accept类型,或者多尝试下设置不同的Accept类型Value。

Accept参考信息如下

以下是Accept的格式类型和匹配顺序,供参考。

  • text/html:HTML格式
  • text/plain:纯文本格式
  • text/xml:XML格式
  • image/gif:GIF图片格式
  • image/jpeg:JPG图片格式
  • image/png:PNG图片格式
  • application/xhtml+xml:XHTML格式
  • application/xml:XML数据格式
  • application/atom+xml:Atom XML聚合格式
  • application/json:JSON数据格式
  • application/pdf:PDF格式
  • application/msword:Word文档格式
  • application/octet-stream:二进制流数据,例如常见的文件下载
  • application/x-www-form-urlencoded:<form encType="">中默认的encType,form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据的格式)。

Accept应用规则如下

  • 当Accept头有application/xmltext/htmlapplication/json,将按照如下顺序进行produces的匹配:

    application/xml > text/html > application/json

  • 当Accept头有application/xml;q=0.3application/json;q=0.8text/html,将按照如下顺序进行produces的匹配:

    text/html > application/json > application/xml

    参数为媒体类型的质量因子,数字越大则优先权越高(从0到1)。

  • 当Accept头有*/*text/*text/html,将按照如下顺序进行produces的匹配:

    text/html > text/* > */*