我很感兴趣是否可以使用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();
}
答案 0 :(得分:2)
GET
请求的参数属于网址(即使用?key=value
语法)。
你可以将其他信息放在标题中,但这不会被解释为与参数相同(即你需要在服务器端以不同方式解释它)并且很少用于通用论点。
答案 1 :(得分:1)
我想你可能有一些概念有点困惑。在PHP $_GET
中提供对GET 参数的访问,而不是HTTP 标题。但是发送GET参数很简单,只需遵循PHP习惯的?key=value
语法即可。它在Java(或其他任何地方)也可以正常工作。
完全标注不同的内容,无论使用GET还是POST发送请求参数,都以相同的方式进行管理。对于大多数应用程序,您不需要设置或检索任何自定义HTTP标头值。