Я пытаюсь использовать glot.io api для компиляции кода Java с помощью curl.
Я прочитал текстовый файл:
BufferedReader bufferedReader = new BufferedReader(new FileReader("input.txt"));
StringBuffer stringBuffer = new StringBuffer();
String line = bufferedReader.readLine();
while(line != null){
stringBuffer.append(line);
line = bufferedReader.readLine();
}
Если я не использую кавычки, у меня нет проблем, когда я запрашиваю URL
URL obj = new URL(url);
HttpURLConnection conn = (HttpURLConnection) obj.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty ("Authorization", "Token myToken");
conn.setRequestProperty("Content-Type", "application/json");
String data = "{\"files\": [{\"name\": \"main.java\", \"content\": \"" + stringBuffer.toString() + "\"}]}";
OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
out.write(data);
out.close();
BufferedReader bf = new BufferedReader(new InputStreamReader(conn.getInputStream()));
System.out.println(bf.readLine());
Но когда я использую String в своем коде, веб-страница возвращает ошибку 400. Вы можете помочь мне ?
@JBNizet знаете ли вы библиотеку java JSON?
Я, наверное, знаю о 4 или 5 из них. Есть большой выбор. Я предпочитаю (но не самый простой) Джексон.




Вы генерируете неправильный JSON. Во-первых, вы удаляете все символы новой строки при чтении текста, во-вторых, вы предполагаете, что строковое значение JSON может содержать любой символ без необходимости экранирования. Это неверно. Например, необходимо экранировать
". Не создавайте JSON путем объединения строк. Используйте библиотеку парсера / маршаллера JSON.