为什么 API HTTP 响应 406 尽管没有通过接受 header?
Why is API HTTP response 406 despite not passing accept header?
我的 API 正在使用 URL
调用其他服务
https://idgenvip.qa.ch3.s.com/IDGen/services/id/generate?idType=GIFT_REGISTRY_ID
并且此服务返回我 HTTP 响应代码 406
这是不可接受的。
UtilHelper:691 - Exception occurred while generating id : Server
returned HTTP response code: 406 for URL:
https://idgenvip.qa.ch3.s.com/IDGen/services/id/generate?idType=GIFT_REGISTRY_ID
我没有在我的请求中通过接受 header。我得到这个的另一个原因是什么?
坦率地说,406 响应可能会 因任何原因...或根本没有原因而被退回。
根据 HTTP 1.1 规范(第 6.5.6 节),应该 返回的是这些 header 之一请求输出的表示服务器无法提供:
- 接受
- Accept-Charset
- Accept-Encoding
- Accept-Language
如果服务器实现遵循规范,响应 body 应该列出它可以提供的表示。 (查看响应 body 看它是否在说什么。)
还能是什么?
可能是服务器告诉您您需要提供"accept"header.
可能是服务器故意给出误导性响应,因为它认为您在滥用 API.
但我真的在猜测。正如我一开始所说的......它可以是任何东西。
我的建议是仔细阅读 API 文档,并询问 运行 服务器的人员您在做什么。
在我的例子中,当我检查代码时,accept header 是硬编码在代码本身中的。
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/xml");
connection.setRequestProperty("Content-Type", "application/json");
所以当我 removed/commented 输出代码时,服务停止抛出 406。:-)
我的 API 正在使用 URL
调用其他服务https://idgenvip.qa.ch3.s.com/IDGen/services/id/generate?idType=GIFT_REGISTRY_ID
并且此服务返回我 HTTP 响应代码 406 这是不可接受的。
UtilHelper:691 - Exception occurred while generating id : Server returned HTTP response code: 406 for URL: https://idgenvip.qa.ch3.s.com/IDGen/services/id/generate?idType=GIFT_REGISTRY_ID
我没有在我的请求中通过接受 header。我得到这个的另一个原因是什么?
坦率地说,406 响应可能会 因任何原因...或根本没有原因而被退回。
根据 HTTP 1.1 规范(第 6.5.6 节),应该 返回的是这些 header 之一请求输出的表示服务器无法提供:
- 接受
- Accept-Charset
- Accept-Encoding
- Accept-Language
如果服务器实现遵循规范,响应 body 应该列出它可以提供的表示。 (查看响应 body 看它是否在说什么。)
还能是什么?
可能是服务器告诉您您需要提供"accept"header.
可能是服务器故意给出误导性响应,因为它认为您在滥用 API.
但我真的在猜测。正如我一开始所说的......它可以是任何东西。
我的建议是仔细阅读 API 文档,并询问 运行 服务器的人员您在做什么。
在我的例子中,当我检查代码时,accept header 是硬编码在代码本身中的。
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/xml");
connection.setRequestProperty("Content-Type", "application/json");
所以当我 removed/commented 输出代码时,服务停止抛出 406。:-)