解决java代码测试http协议505错误

时间:2023-03-09 18:09:16
解决java代码测试http协议505错误

代码功能:通过java代码获取网页源代码:

所用工具:Myclipse8.5+tomcat6.0+浏览器

系统环境:windows xp旗舰版
火狐浏览器版本:

解决java代码测试http协议505错误

IE浏览器版本:

解决java代码测试http协议505错误

测试http协议有错误java代码如下。

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket; public class testhttp {
public static void main(String[] args) throws Exception {
Socket s=new Socket("127.0.0.1",8084);
PrintWriter pw =new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
pw.println("GET / HTTP/1.1");
pw.println("Host:PC2014040911DWA");
pw.println("Content-Type:text/html");
pw.println();
pw.flush();
BufferedReader br =new BufferedReader(new InputStreamReader(s.getInputStream()));
String str ="";
while((str =br.readLine())!=null){
System.out.println(str);
}
br.close();
pw.close();
s.close(); }
}

控制台错误信息:

解决java代码测试http协议505错误

状态:
tomcat已经正常打开,我的 tomcat端口8084:

解决java代码测试http协议505错误

浏览器输入地址可以打开:

解决java代码测试http协议505错误

已经尝试过的:

1.自己百度查询505错误信息:

HTTP 505错误是HTTP状态码的一种,表示“HTTP版本不受支持”,当服务器不支持请求中所使用的HTTP协议版本时就回返回此错误,最为常见的是 HTTP/1.1。

解决505错误办法:
如果启用了 HTTP 1.1,则可能出现此类错误。要禁用 HTTP 1.1,请单击“工具”按钮,单击“Internet 选项”,然后单击“高级”
选项卡。在“设置”下,滚动到“HTTP 1.1 设置”部分,清除“使用 HTTP 1.1”复选框。如果第三方产品干
扰 Internet Explorer,则可能出现此类错误。请尝试关闭所有程序,然后重新尝试访问该网页。
大多数浏览器都默认Web服务器支持 1.x 的版本的 HTTP 协议。但实际上如 0.9 版今天已很少使用,关键是因为和新版本的协议比起来它们的
安全性和性能都差得多。 所以,如果您在浏览器中看到这个错误,可以升级您的Web服务器软件。如果版本 1.x 的请求失败,很可能是因为您
的 Web 服务器不是很好地支持 1.x 协议版本, 而不是根本不支持。

.经过尝试无效。

解决java代码测试http协议505错误

解决java代码测试http协议505错误

2.谷歌牛人博客

经验总结:HTTP返回505错误小记

上面方法经尝试,未果。

所以在****发帖求助。

http://bbs.****.net/topics/390788096

结果还是没有找到方法。

后来又自己读了百度百科里面这句话:

505错误的最专业描述
505 (HTTP Version Not Supported/不支持的 HTTP 版本)
505 (SC_HTTP_VERSION_NOT_SUPPORTED)状态码是说服务器并不支持在请求中所标明 HTTP 版本。
该状态是新加入 HTTP 1.1的。

于是试着把http1.1版本号删掉。哈哈,终于成功啦。

正确运行代码:

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket; public class testhttp {
public static void main(String[] args) throws Exception {
Socket s=new Socket("127.0.0.1",8080);
PrintWriter pw =new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
pw.println("GET /");
pw.println("Host:PC2014040911DWA");
pw.println("Content-Type:text/html");
pw.println();
pw.flush();
BufferedReader br =new BufferedReader(new InputStreamReader(s.getInputStream()));
String str ="";
while((str =br.readLine())!=null){
System.out.println(str);
}
br.close();
pw.close();
s.close(); }
}

效果如下:

解决java代码测试http协议505错误

解决java代码测试http协议505错误