2014-11-14 94 views
0

我想在Java中使用HttpURLConnection做GET请求。但是,每次我这样做,每次都会收到400:错误的请求。我需要改变以使其工作?JAVA HttpURLConnection连接+代理

当我在代理服务器后面的计算机上使用它时出现错误。 而且当我用PHP和这个代理使用Curl时,它的工作环境没有密码或认证,所以我认为问题不在那里。

如果有人知道为什么?

谢谢

错误:

url connect ... 
ERROR = 400 
sun.net.www.protocol.http.HttpURLConnection:http://google.com 
Bad request 
[email protected]96 

这里是我的代码:

package test; 

import java.net.*; 
import java.io.*; 

public class Connect { 

    public static void main(String[] args) { 
     HttpURLConnection connexion = null; 

     try { 
      URL url = new URL("http://google.com"); 

      System.setProperty("http.proxyHost", "IP_PROXY"); 
      System.setProperty("http.proxyPort", "80"); 

      System.out.println("url connect..."); 
      connexion = (HttpURLConnection) url.openConnection(); 

      connexion.setRequestMethod("GET"); 


      InputStream is; 

      if (connexion.getResponseCode() >= 400) { 
       System.out.println("Erreur = " + connexion.getResponseCode()); 
       System.out.println(connexion.toString()); 
       System.out.println(connexion.getResponseMessage()); 
       System.out.println(connexion.getErrorStream()); 

      } else if (connexion.getResponseCode() != HttpURLConnection.HTTP_OK) { 
       System.out.println(connexion.getResponseMessage()); 
      } else { 
       System.out.println(is = connexion.getInputStream()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 

     } finally { 
      connexion.disconnect(); 
     } 
     System.exit(0); 
    } 
} 

回答

0

网址为您提供了设置代理服务器的方法。

url.openConnection(new Proxy(...));

问候

0

谢谢你的答案

在此代码,我用的是系统属性设定装置:System.setProperty 但就我在做这个路才:

Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress("IP_PROXY", 80)); 
connexion = (HttpURLConnection) url.openConnection(proxy); 

但同样的结果,并确定端口是80,而不是8080