java - HTTP-Accept header 在几种方法上是不同的

标签 java php http header httprequest

我正在尝试获取请求的 http-accept header ,但在从中获取 header 时我得到了不同的值

  1. Java - req.getHeader("Accept") + req.getHeader("Accept-Encoding") + req.getHeader("accept-language")
  2. PHP - '<?php echo $_SERVER['HTTP_ACCEPT'].$_SERVER['HTTP_ACCEPT_ENCODING'].$_SERVER['HTTP_ACCEPT_LANGUAGE']; ?>

结果是:

  1. */*gzip,deflate,sdchen-US,en;q=0.8
  2. text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8gzip,deflate,sdchen-US,en;q=0.8

它们为什么不同?

我是不是理解错了?

最佳答案

PHP 返回所有请求参数,而您的 Java HTTP 客户端仅返回一个。

HttpServletRequest 方法提供了 getHeaders(String)那个

Returns all the values of the specified request header as an Enumeration of String objects.

所以使用它。

注意 Java 结果如何(拆分以说明您正在执行的 String 连接)

*/*                                                                          */
^ the last 'Accept' header value

gzip,deflate,sdch 
^ the 'Accept-Encoding'

en-US,en;q=0.8
^ the 'Accept-Language'

我不确定为什么它不为其他 header 执行此操作。


如果您的输出更易于阅读,这从一开始就会更加清晰。不要只是像那样连接字符串。使用某种分隔符。

关于java - HTTP-Accept header 在几种方法上是不同的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20827504/

相关文章:

java - 通过 JDBC 连接到 MS SQL Server 引发 SQLServerException

c# - HTTPS Web 请求失败

php - 如何从 PHP 数组中获取 `json_encode()` 键?

php - Active MySQL 添加 - 困惑

javascript - 更改单选按钮组的标签类别

http - 通过 http 请求控制的 shoutcast 流

c++ - 客户端使用的 REST 和 HTTP 库之间有什么区别?

java - 将列表转换为可选的 map

java - While 循环和黑屏

java - 使用 Selenium 迭代网站的所有链接