Ошибка с переменной cURL и java String

Я пытаюсь использовать 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. Вы можете помочь мне ?

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

JB Nizet 02.04.2018 10:51

@JBNizet знаете ли вы библиотеку java JSON?

TraRack 02.04.2018 10:54

Я, наверное, знаю о 4 или 5 из них. Есть большой выбор. Я предпочитаю (но не самый простой) Джексон.

JB Nizet 02.04.2018 10:57
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
66
0

Другие вопросы по теме