java中如何设置HTTP协议的头信息(header)

java中如何设置HTTP协议的头信息(header),第1张

首先,我们先看一下http的头信息到底是什么:

HTTP(HyperTextTransferProtocol) 即超文本传输协议,目前网页传输的的通用协议。HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应。就整个网络资源传输而 言,包括message-header和message-body两部分。首先传递message- header,即http header消息。http header 消息通常被分为4个部分: general header, request header, response header, entity header。但是这种分法就理解而言,感觉界限不太明确,根据日常使用,大体分为Request和Response两部分。

在通常的servlet/jsp应用中,我们只是从http的header中取得信息,如果要设置信息,需要用到HttpClient,具体的设置方法如下:

HttpResponse response = null

HttpGet get = new HttpGet(url)

get.addHeader("Accept", "text/html")

get.addHeader("Accept-Charset", "utf-8")

get.addHeader("Accept-Encoding", "gzip")

get.addHeader("Accept-Language", "en-US,en")

get.addHeader("User-Agent", "Mozilla/5.0 (X11Linux x86_64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22")

response = client.execute(get)

HttpEntity entity = response.getEntity()

Header header = entity.getContentEncoding()

if (header != null)

{

HeaderElement[] codecs = header.getElements()

for (int i = 0i <codecs.lengthi++)

{

if (codecs[i].getName().equalsIgnoreCase("gzip"))

{

response.setEntity(new GzipDecompressingEntity(entity))

}

}

}

return response

其中,client为一个HttpClient的实力,创建方式如:

SchemeRegistry schemeRegistry = new SchemeRegistry()

schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()))

schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()))

PoolingClientConnectionManager cm = new PoolingClientConnectionManager(schemeRegistry)

cm.setMaxTotal(200)

cm.setDefaultMaxPerRoute(2)

HttpHost googleResearch = new HttpHost("research.google.com", 80)

HttpHost wikipediaEn = new HttpHost("en.wikipedia.org", 80)

cm.setMaxPerRoute(new HttpRoute(googleResearch), 30)

cm.setMaxPerRoute(new HttpRoute(wikipediaEn), 50)

DefaultHttpClient client = new DefaultHttpClient(cm)

java请求组装cookie和header在某些处理http协议的java包中,可以看到对header的生成提供了专门的方法,类似于addHeader这样的,有的还封装了专门针对cookie的方法,搞得好像cookie和header是两码事,我在用org.apache.http的时候都被搞晕了。http协议很简单,能放数据的地方真的不多,那些额外的数据几乎都是放在header中。

1、检查php.ini文件,确认default_charset设置为正确值,如utf-8等。

2、在php.ini文件中,添加一行”mime_magic.magicfile=<path_to_mime_magic_file>”,其中<path_to_mime_magic_file>替换为文件的实际路径,以便PHP能够正确识别文件的编码。

3、确保Apache服务器有AddDefaultCharset设置,并且其值与php.ini文件中的default_charset值一致。

4、确保Apache服务器的mod_mime模块启用,以便它能够根据文件的扩展名正确设置文件的编码。

5、确保Apache服务器的mod_headers模块启用,以便它能够使用php_header()函数正确设置文件的字符集。

6、在Apache服务器的配置文件中,添加一行”AddDefaultCharset <charset>”,其中<charset>替换为正确的字符集名称,以便Apache能够正确设置文件的编码。

7、在php文件中,使用php_header()函数设置文件的字符集,该函数需要mod_headers模块支持。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7899914.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存