在Java中发送HTTP GET头

在Java中发送HTTP GET头,java,http,http-headers,get,httpurlconnection,Java,Http,Http Headers,Get,Httpurlconnection,我感兴趣的是是否可以用Java发送HTTP GET头 基本上,我正在开发一个与REST类似的web服务接口的Java程序。为了模拟这一点,我创建了一个小php文件,它只输出$\u GET中的所有变量,这样我就可以查看GET头变量是否正确提交 在php中,您可以使用?key=value语法“发送”get变量,但是我不确定这是否适用于每个web平台。因此,我考虑在HTTPGET头中发送这些(键、值)对(如果这不可能,或者是错误的方法,请随时指出!) 我得到了以下代码,但服务器的响应不会回显我发送的任

我感兴趣的是是否可以用Java发送HTTP GET头

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

在php中,您可以使用
?key=value
语法“发送”get变量,但是我不确定这是否适用于每个web平台。因此,我考虑在HTTPGET头中发送这些(键、值)对(如果这不可能,或者是错误的方法,请随时指出!)

我得到了以下代码,但服务器的响应不会回显我发送的任何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();
        }        
公共静态无效请求(字符串地址、矢量道具){
URL=null;
BufferedReader reader=null;
StringBuilder StringBuilder;
试一试{
url=新的url(地址);
HttpURLConnection connection=(HttpURLConnection)url.openConnection();
connection.setRequestMethod(“GET”);
connection.setDoOutput(真);
//添加请求头
对于(RequestProperty道具:道具){
//这里我添加了像MyKey=MyValue这样的对
connection.addRequestProperty(prop.key、prop.value);
}
连接。setReadTimeout(15000);
connection.connect();
reader=new BufferedReader(new InputStreamReader(connection.getInputStream());
字符串行=null;
而((line=reader.readLine())!=null){
系统输出打印项次(行);
}
}
捕获(例外情况除外){
例如printStackTrace();
}        

获取请求的参数属于URL(即使用
?key=value
语法)


您可以将其他信息放在标题中,但这不会被解释为与参数相同(即,您需要在服务器端对其进行不同的解释),并且对于通用参数很少这样做。

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


您可以将其他信息放在标题中,但这不会被解释为与参数相同(即,您需要在服务器端对其进行不同的解释)在PHP中,GET提供对GET参数的访问,而不是HTTP头。但是发送GET参数很容易,只需遵循与PHP相同的
?key=value
语法即可。在Java中,GET同样有效(或者在其他任何地方)


头是完全不同的东西,不管请求参数是使用GET还是POST发送的,都是相同的方式。对于大多数应用程序,您不需要设置或检索任何自定义HTTP头值。

< P>我认为您可能有两个概念有点混淆。在PHP<代码> $yGET提供了获得PAR的访问权限。参数,而不是HTTP头。但是发送GET参数很简单,只需遵循与PHP相同的
?key=value
语法即可。它在Java(或其他任何地方)中也同样有效


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

ah,谢谢Joachim,我当时的想法不对,谢谢您的快速回复。ah,谢谢Joachim,我只是不知道该怎么做,谢谢你的快速回复。嗨,Aroth,谢谢你提供的信息,不幸的是我只能将一个答案标记为正确答案,所以我将第一个答案标记为正确答案,但是你的解释非常有帮助,显然我有点困惑。嗨,Aroth,谢谢你提供的信息,不幸的是我只能标记一个答案由于答案正确,所以我将第一个答案标记为正确,但是你的解释非常有用,显然我有点困惑。