java发送get请求带body
时间: 2023-10-18 15:20:41 浏览: 131
在HTTP/1.1规范中,GET请求是不支持请求体(request body)的,只有POST请求及其它一些请求方式支持。但是在实际中,有时候需要在发送GET请求时带上一些参数,这些参数需要通过请求体来传递,这种情况下可以采用以下两种方式实现:
1. 利用HTTP Post来模拟HTTP Get带body
代码示例:
```java
URL url = new URL("http://example.com/resource");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write("param1=value1¶m2=value2");
writer.flush();
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
writer.close();
reader.close();
```
2. 采用HTTP Get方式,但在请求URL中带上参数
代码示例:
```java
String url = "http://example.com/resource?param1=value1¶m2=value2";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
```
需要注意的是,第二种方式虽然可以在请求体中传递参数,但是可能会被一些HTTP代理服务器或者Web服务器认为是不符合规范的请求,因此并不是所有的Web服务器都支持此方式。建议采用第一种方式来发送带请求体的请求。
阅读全文