2011-03-23 23 views
0

我很感兴趣,如果有可能用Java发送HTTP GET标题。用Java发送HTTP GET标题

基本上我的工作与类似REST的Web服务接口的Java程序。为了模仿这个,我创建了一个简单的输出$_GET中所有变量的小php文件,这样我可以看到我的GET头变量是否正确提交。

在PHP中,你可以“发送”通过使用?key=value语法GET变量,但我不知道这是否适用于每一个网络平台。所以我想在HTTP GET头中发送这些(键,值)对(如果这是不可能的,或者错误的方式去做,请随时指出!)。

我有下面的代码,而是从服务器的响应不会回显任何GET变量我送:

public static void Request(String address, Vector<RequestProperty> props){ 
     URL url = null; 
     BufferedReader reader = null; 
     StringBuilder stringBuilder; 
     try{ 
      url = new URL(address); 
      HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
      connection.setRequestMethod("GET"); 
      connection.setDoOutput(true); 

      //Add request headers 
      for(RequestProperty prop : props){ 
       //Here I add the pairs like MyKey = MyValue 
       connection.addRequestProperty(prop.key, prop.value); 
      } 

      connection.setReadTimeout(15000); 
      connection.connect(); 

      reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); 

      String line = null; 
      while((line = reader.readLine()) != null){ 
       System.out.println(line); 
      } 
     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 
     }   

回答

2

一个GET请求的参数属于在URL(即使用语法为?key=value)。

可能将其他信息放在标题中,但不会被解释为与参数相同(即您需要在服务器端以不同的方式解释它),而且很少用于通用参数。

+0

啊,谢谢Joachim,我只是错误的想法如何处理它,谢谢你的快速回复。 – 2011-03-23 08:13:10

1

我想你可能有一些概念有点困惑。在PHP $_GET提供访问GET 参数,而不是http 。但发送一个GET参数很简单,只需遵循您习惯于PHP的?key=value语法。它在Java(或其他任何地方,就此而言)中也同样适用。

集管完全不同的事,并进行管理而不管请求参数是使用GET或POST发送相同的方式。对于大多数应用程序,您不需要设置或检索任何自定义HTTP标头值。

+0

嗨,宝贝,谢谢你的信息,不幸的是我只能将一个答案标记为正确答案,所以我将第一个答案标记为正确,但是你的解释很有帮助,显然我有点困惑。 – 2011-03-23 08:27:39