2015-04-15 56 views
0

我嘗試做以下(在Java中):的Java .getInputStream()的openConnection()HTTP響應代碼中的錯誤

  • 連接到一些代理服務器& HTTP_URL一些

但我有像一些錯誤: java.net.ConnectException: Connection timed out: connect...

或與之相關的HTTP響應代碼錯誤:302, 400, FileNotFound, file server error

在我做的一些更改中,我甚至得到了200的代碼。 (當我只用openConnection() =>(無代理IP地址) 這是我的最佳運行跟蹤

我有所有類:。在錯誤味精(來源不明),從IDE Eclipse的月神控制檯。

一些錯誤進來形式的/或:.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(); 
    } 
+1

你應該明確地編輯您的問題,所以它變得更容易閱讀剝離下來。還刪除你的代碼,以顯示你有一個問題。我試圖理解你的問題,但沒有這樣做... – Jens

+0

謝謝Jens我知道文本密集,但問題是openConnection(代理)如果你不使用代理代碼工作正常,如果您使用:System.setProperty(「 http.proxyHost「,Host); \t System.setProperty(「http.proxyPort」,Port);它也適用於什麼問題?它是一個需要擴展/覆蓋的抽象類嗎? –

+0

我已經閱讀了關於openConnection(代理)的StackOverflow問題,並看到有很多人在這個相同的問題堆疊。關於openConnection()方法的代理問題,我沒有注意到Java中的一個主要錯誤。 –

回答

0

爲了解決您的代理問題,您可以嘗試使用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); 
+0

我會嘗試一下,然後我會看到。謝謝!!!!! Srinivasan先生 –

+0

Ups !!!!!對不起,斯里尼瓦桑先生沒有工作!!!!!我正在使用一些代碼:SocketAddress addr = new InetSocketAddress(proxyHost,proxyPort); 代理httpProxy =新代理(Proxy.Type.HTTP,addr);用主機的字符串和端口的整數,這沒有問題。爲什麼我使用:System.setProperty(「http.proxyHost」,Host); \t System.setProperty(「http.proxyPort」,Port); –

+0

代理類的鏈接來自'reflection'包。 Imho,與HTTP代理服務器背後無關...... – Jens

相關問題