【问题标题】:Java .getInputStream() openConnection() HTTP response code ERRORSJava .getInputStream() openConnection() HTTP 响应代码 ERRORS
【发布时间】:2015-04-15 15:46:57
【问题描述】:

我正在尝试执行以下操作(在 Java 中):

  • 连接到一些代理服务器和一些http_url

但我遇到了一些错误,例如: java.net.ConnectException: Connection timed out: connect...

或与HTTP响应码相关的错误:302, 400, FileNotFound, file server error

在我所做的一些更改中,我什至得到了200 代码。 (当我只使用openConnection() =>(没有代理IP地址)。 这是我最好的运行轨迹。

我在 IDE Eclipse Luna 控制台的错误消息中包含所有类别的 : (Unknown Source)。

一些错误来自/或来自:.getInputStream()方法,我不知道是否有关于setDoInput()setDoOutput、编码或其他:

有什么身体可以帮助我吗?

这是我的代码:

url = new URL(http_url);
HttpURLConnection conn;
    try {
        conn = (HttpURLConnection)url.openConnection(proxy);
        conn.setRequestMethod("GET");
        conn.setRequestProperty("User-Agent", USERAGENT);

        conn.setUseCaches(false);
        conn.setRequestProperty("Accept", "*/*");
        conn.addRequestProperty("Referer", "http://www.google.com/");
        conn.setRequestProperty("Accept-Encoding", "gzip,deflate,sdch");
        conn.setRequestProperty("Accept-Language", "en-US,en;q=0.8");
        conn.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
        conn.setRequestProperty("X-Requested-With", "XMLHttpRequest");
        conn.setDoInput(true);
        System.out.println("response msg  " + conn.getResponseMessage() + " CODE");

        System.out.println("errorStream msg " + conn.getErrorStream());
        System.out.println("inputStream msg " + conn.getInputStream());
        String header_date = conn.getHeaderField("Date");
        System.out.println(" date es: " + header_date);
        String line = null;
        StringBuffer tmp = new StringBuffer();
        System.out.println("the code is :" + conn.getResponseCode());

        if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

            while ((line = in.readLine()) != null) {
                tmp.append(line);
            }
            System.out.println("value line is:  " + line +"& date is: " + header_date);

            Scrape(String.valueOf(tmp)); // temp.toString()

            in.close();
            in = null;
            url = null;
            conn.disconnect();
            conn = null;
        } else {   
            System.out.println("something bad happened code <>200, debug from your server"); 
        }        
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();    
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (UnsupportedEncodingException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    }

【问题讨论】:

  • 您应该明确地编辑您的问题并将其剥离,以便于阅读。还要剥离您的代码以准确显示您遇到的一个问题。我试图了解您的问题,但没有这样做...
  • 谢谢 Jens 我知道文本很密集,但问题是 openConnection(proxy) 如果你不使用代理代码工作正常,如果你使用: System.setProperty("http.proxyHost", Host) ; System.setProperty("http.proxyPort", 端口);它也有效,问题是什么??????它是一个需要扩展/覆盖的抽象类吗??????
  • 我已经阅读了有关 openConnection(proxy) 的 StackOverflow 问题,并且看到有很多人遇到了同样的问题。我没有注意到 Java 中关于 openConnection() 方法的代理问题的主要错误。
  • 查看此链接以了解相同的 openConnection(代理)问题:postseek.com/meta/df0bd802cfb7788ee9c17834075ac94b 感谢您的帮助。
  • 好吧,只要你确认你的文本是密集的,但不要改变任何东西,它不会变得更好。你的问题难以理解。您是否在需要连接的公司代理背后?如果是这样,你怎么能得到200 的返回码?真的,您的问题是“一团糟”。我不太明白你的情况和你的要求。

标签: java eclipse windows scraper


【解决方案1】:

要解决您的代理问题,您可以尝试使用Proxy,如下所示

Proxy proxy= new Proxy(Proxy.Type.HTTP, new InetSocketAddress(<Proxy IP Address as String>, <Proxy Port Number as Integer>));
        HttpURLConnection http_conn=(HttpURLConnection)request_url.openConnection(proxy);

【讨论】:

  • 起来!!!!!!对不起,斯里尼瓦桑先生,这不起作用!!!!!!我正在使用一些代码,例如: SocketAddress addr = new InetSocketAddress(proxyHost, proxyPort);代理 httpProxy = new Proxy(Proxy.Type.HTTP, addr);主机为字符串,端口为整数,这没有问题。为什么如果我使用: System.setProperty("http.proxyHost", Host); System.setProperty("http.proxyPort", 端口);
  • Proxy 类的链接来自reflection 包。恕我直言,这与位于 HTTP 代理服务器后面无关...
  • java.net.SocketException:来自 sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source) 服务器的文件意外结束 sun.net.www.http.HttpClient.parseHTTP(Unknown来源)在 sun.net.www.http.HttpClient.parseHTTPHeader(Unknown Source) 在 sun.net.www.http.HttpClient.parseHTTP(Unknown Source) atsun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source ) 在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source) at java.net.HttpURLConnection.getResponseCode(Unknown Source) at com.blogger.HTTPScrap.main(HTTPScrap.java:109) 这是我的运行现在 0925 小时
  • (HttpURLConnection)url.openConnection(proxy); 是什么原因不工作 &&&& (HttpURLConnection)url.openConnection();做的工作????为什么?有什么区别?
猜你喜欢
  • 1970-01-01
  • 2020-11-12
  • 1970-01-01
  • 2017-12-06
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多