Я провел некоторое исследование по использованию HttpUrlConnect, и большинство примеров, которые я видел, использует либо a) строку параметров, которая выглядит следующим образом:
paramString = "param1=someParam¶m2=2ndparam¶m3=3rdparam";
b) использует метод put для размещения параметров:
JSONObject json = new JSONObject();
json.put("param1", "Parameter");
json.put("param2", "Parameter2");
json.put("param3", "Parameter3");
Формат, который я хочу отправить, выглядит следующим образом:
{
"grant_type":"password",
"username":"testuser@someid.com",
"password":"testPwd123$"
}
Можно ли отправить форматированную строку JSON вместо установки параметров или использования строки параметра?Код, который я использую для отправки моего запроса POST, выглядит следующим образом:
public static String PostRequest(String urlString, String token, String jsonString) throws IOException {
byte[] postData = jsonString.getBytes(StandardCharsets.UTF_8);
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setInstanceFollowRedirects(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty ("Authorization", "Bearer " + token);
conn.setUseCaches(false);
try( DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
wr.write(postData);
}
int responseCode = conn.getResponseCode();
System.out.println("POST response code: " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
StringBuffer response = new StringBuffer();
while ((line = in.readLine()) != null) {
response.append(line);
}
in.close();
return response.toString();
}
Я открыт для предложений, использовать ли другую библиотеку или есть какие-либо изменения кода, которые я должен внести вчтобы взять строку в формате JSON.