用Java发送HTTP GET头

时间:2011-03-23 08:07:46

标签: java http http-headers get httpurlconnection

我很感兴趣是否可以使用Java发送HTTP GET标头。

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

在php中,您可以使用?key=value语法“发送”获取变量,但我不确定这是否适用于每个Web平台。所以我考虑在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 个答案:

答案 0 :(得分:2)

GET请求的参数属于网址(即使用?key=value语法)。

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

答案 1 :(得分:1)

我想你可能有一些概念有点困惑。在PHP $_GET中提供对GET 参数的访问,而不是HTTP 标题。但是发送GET参数很简单,只需遵循PHP习惯的?key=value语法即可。它在Java(或其他任何地方)也可以正常工作。

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

相关问题