get 请求 的HttpURLConnection 带body参数
时间: 2024-10-17 11:11:53 浏览: 30
Android Studio发起GET网络请求
在Java中,如果你想要使用HttpURLConnection发送GET请求并携带body参数,通常情况下GET请求是不应该包含body数据的,因为其设计初衷就是用于获取资源,而不是提交数据。但在某些情况下,比如查询字符串过长或者需要保密性较低的数据,可以尝试将部分参数放在URL的查询字符串中。
例如,你可以这样做:
```java
URL url = new URL("http://example.com/api?param1=value1¶m2=value2");
String encodedParams = URLEncoder.encode("param1=value1", "UTF-8") + "&" + URLEncoder.encode("param2=value2", "UTF-8"); // 对参数进行编码
url = new URL(url.toString() + "?" + encodedParams);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET"); // 设置请求方法为GET
try {
int responseCode = connection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
content.append(inputLine);
}
in.close();
// 这里是处理服务器返回的内容
} else {
// 处理错误码
}
} finally {
connection.disconnect(); // 关闭连接
}
```
但是请注意,如果需要发送大量数据或者对安全性有较高要求,应该使用POST或者其他HTTP方法,并通过设置`setDoOutput(true)`、`OutputStream`等来传递body。
阅读全文