当前位置: 代码迷 >> J2SE >> 快被这个错误弄疯了,求大神指点迷津
  详细解决方案

快被这个错误弄疯了,求大神指点迷津

热度:52   发布时间:2016-04-23 20:34:28.0
快被这个异常弄疯了,求大神指点迷津
报的异常为:
java.net.SocketException: Unexpected end of file from server
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)GBK

at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source)
at sun.net.www.http.HttpClient.parseHTTP(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at com.test.Demo.main(Demo.java:27)
代码为:
package com.test;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;

public class Demo {
public static void main(String[] args) throws IOException {
// 方法一 最常用的 PING 方法

System.getProperties().setProperty("proxySet", "true");
System.getProperties().setProperty("http.proxyHost", "10.6.0.200");
System.getProperties().setProperty("http.proxyPort", "808");

URL url = new URL("http://www.baidu.com");
HttpURLConnection httpCton = (HttpURLConnection) url.openConnection();
HttpURLConnection.setFollowRedirects(true);
httpCton.setRequestMethod("GET");
httpCton.setRequestProperty(
"User-agent",
"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36");
try {
InputStream in = httpCton.getInputStream();

BufferedReader br = new BufferedReader(new InputStreamReader(in,
"UTF-8"));
String str = null;
while ((str = br.readLine()) != null) {
System.out.println(str);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(Charset.defaultCharset().name());// 看默认Charset是什么
}
}

是通过一个代理服务器去访问百度的程序。永远报这个错。请大神指点迷津。
这里无论是使用IE的代理服务器,还是QQ,还是其它炒股软件,设置HTTP代理后,都正常。
公司使用的代理服务器是ccproxy。
------解决方案--------------------
引用:
Quote: 引用:

1 防火墙问题
2 编码问题,指定下编码
3 有条件的话到代理服务那里 , tcpDump一下,看看数据包是否正确完整。
4 代理服务器的 对这些方法的处理GET, HEAD, POST, TRACE, DELETE, PUT是否支持
5 超时的问题。

帮你看了下源代码


 ret = b[0] == 'H' && b[1] == 'T'
696                    && b[2] == 'T' && b[3] == 'P' && b[4] == '/' &&
697                b[5] == '1' && b[6] == '.';
698            serverInput.reset();
699            if (ret) {

 else if (nread != 8) {
754                if (!failedOnce && requests != null) {
755                    if (httpuc.getRequestMethod().equals("POST") && !retryPostProp) {
756                        // do not retry the request
757                    } else {
758                        failedOnce = true;
759                        closeServer();
760                        cachedHttpClient = false;
761                        openServer();
762                        if (needsTunneling()) {
763                            httpuc.doTunneling();
764                        }
765                        afterConnect();
766                        writeRequests(requests, poster);