尽管未传递接受标头,但为什么API HTTP响应406?

我的API正在使用URL调用其他服务

https://idgenvip.qa.ch3.s.com/IDGen/services/id/generate?idType=gift_REGISTRY_ID

此服务将返回我 HTTP响应代码406 这是不可接受的。

  

UtilHelper:691-生成id时发生异常:服务器   网址返回HTTP响应代码:406:   https://idgenvip.qa.ch3.s.com/IDGen/services/id/generate?idType=GIFT_REGISTRY_ID

我没有在请求中传递接受标头。我得到这个的另一个原因是什么?

yndf345678 回答:尽管未传递接受标头,但为什么API HTTP响应406?

坦白地说,出于任何原因……或根本没有原因,可能会返回406个响应

根据HTTP 1.1规范(第6.5.6节),应 返回,如果这些标头之一正在以服务器无法提供的表示形式请求输出,则应返回:

  • 接受
  • 接受字符集
  • 接受编码
  • 接受语言

如果服务器实现遵循规范,则响应主体应列出其可以提供的表示形式。 (查看响应主体是否在说什么。)

还有什么呢?

  • 可能是服务器告诉您需要提供一个“ accept”标头。

  • 很可能是服务器给出了故意误导的响应,因为它认为您正在滥用API。

但是我真的在猜。正如我在一开始所说的...可能是任何东西。

我的建议是仔细阅读API文档,并询问运行服务器的人员您正在做什么。

,

在我的情况下,当我检查代码时,accept标头已在代码本身中进行了硬编码。

HttpURLConnection connection = (HttpURLConnection)url.openConnection();
            connection.setRequestMethod("GET");
            connection.setRequestProperty("Accept","application/xml");
            connection.setRequestProperty("Content-Type","application/json");

因此,当我删除/注释掉该代码时,该服务停止抛出406。:-)

本文链接:https://www.f2er.com/3126554.html

大家都在问