关于HTTP请求报头的字符编码问题.
RT,我现在已知一个文件的URL地址(http协议).
现在我想得到这个文件的相关信息,比如文件的大小.那么我要发送一个请求.
我是这样实现这个功能的:
private static DataInfo getDataInfo(URL addr)throws IOException{
String host =addr.getHost();
String file =addr.getFile();
int port =addr.getPort();
if(port==-1) port =80;
Socket s =new Socket(host,port);
PrintStream out =new PrintStream(s.getOutputStream(),false,"gb2312");
BufferedReader in =new BufferedReader(
new InputStreamReader(s.getInputStream(),"gb2312"));
out.print("HEAD "+file+" HTTP/1.1\r\n");
out.print("Host: "+host+":"+port+"\r\n");
out.print("Accept: */*\r\n");
out.print("Referer: "+addr+"\r\n");
out.print("User-Agent: Mozilla/4.0 (compatible; MSIE 5.00; Windows 98)\r\n");
out.print("\r\n");
out.flush();
String str;
while((str=in.readLine())!=null){
//解析报文信息
}
out.close();
in.close();
...
}
注意,其中
PrintStream out =new PrintStream(s.getOutputStream(),false,"gb2312");
要指明字符编码,如果这里不正确的话,就会导致服务器不能正确识别请求信息,产生一个
HTTP/1.1 404 Object Not Found
的结果.
现在的问题是:我怎样才能知道这个字符编码究竟是什么?