Отправка строки в формате JSON через HttpUrlConnection - PullRequest
0 голосов
/ 02 июня 2018

Я провел некоторое исследование по использованию HttpUrlConnect, и большинство примеров, которые я видел, использует либо a) строку параметров, которая выглядит следующим образом:

paramString = "param1=someParam&param2=2ndparam&param3=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.

...