请不要将我的问题与使用 HttpURLConnection 发送带有 POST 请求的正文混淆。
我想使用 HttpURLConnection 发送带有 GET 请求的正文。这是我正在使用的代码。
public static String makeGETRequest(String endpoint, String encodedBody) {
String responseJSON = null;
URL url;
HttpURLConnection connection;
try {
url = new URL(endpoint);
connection = (HttpURLConnection) url.openConnection();
connection.setInstanceFollowRedirects(true);
connection.setDoOutput(true);
connection.setRequestMethod("GET");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
connection.connect();
OutputStream outputStream = connection.getOutputStream();
outputStream.write(encodedBody.getBytes());
outputStream.flush();
Util.log(connection,connection.getResponseCode()+":"+connection.getRequestMethod());
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String responseChunk = null;
responseJSON = "";
while ((responseChunk = bufferedReader.readLine()) != null) {
responseJSON += responseChunk;
}
bufferedReader.close();
connection.disconnect();
} catch (Exception e) {
e.printStackTrace();
Util.log(e, e.getMessage());
}
return responseJSON;
}
实际情况是根据 connection.getInputStream()和connection.getOutPutStream() 自动识别请求类型。
当您调用connection.getOutPutStream()时,请求类型会自动设置为POST,即使您已使用connection.setRequestMethod("GET")将请求类型明确设置为GET。
问题是我正在使用第 3 方 Web 服务 (API),它接受请求参数作为 GET 请求的正文
<get-request>
/myAPIEndPoint
body = parameter1=value as application/x-www-form-urlencoded
<response>
{json}
我很清楚大多数情况下 GET 没有请求主体,但许多 Web 服务经常使用带有参数的 GET 请求作为主体而不是查询字符串。请指导我如何在不使用任何第 3 方库(OkHttp、Retrofit、Glide 等)的情况下在 android 中发送带正文的 GET 请求
精慕HU
相关分类