Поддержка Проблемы и решения не публикует контент с помощью rest api

  • создаю приложение для публикации контента по rest api.
    возникла следующая проблема:
    при попытке создать пост или комментарий если в тексте есть перенос строки, выдаётся ошибка 400
    если текст в одну строку, всё отрабатывается корректно

    Есть идеи?

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Неужели никто не может помочь?

    вы никакого кода не указали.
    а без кода гадать, что вы сделали не так никто не будет.

    Тело запроса стандартные. Если контент идёт одной строкой, Публикация происходит. Если есть Перенос строки, Происходит ошибка 400.
    Тело запроса:
    {
    «title»: «{-Variable.title-}»,
    «content»: «{-Variable.post-}»,
    «tags» : «{-Variable.tags-}»,
    «status» : «draft»,
    «excerpt» : «{-Variable.excerpt-}…»,
    «featured_media» : «{-Variable.image_id-}»
    }
    Useragent:
    Content-Type: application/x-www-form-urlencoded
    Authorization:Basic XXXXXXXXXXXXXXXXXXX

    • Ответ изменён 4 года, 8 месяцев назад пользователем Yuri. Причина: потёр логин-пароль

    в JSON переносы трансформируются аля:

    
    {"test":"line
    break"}
    

    а надо:

    
    {"test":"line\nbreak"}
    

    https://stackoverflow.com/questions/55494714/java-code-with-post-request-with-newline-in-json-body-issuing-an-error

    Модератор Yuri

    (@yube)

    Authorization:Basic

    @killer911 не стоит светить в публичных местах логины-пароли.

    без обработки текста:

    {«code»:»rest_invalid_json»,»message»:»\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 JSON.»,»data»:{«status»:400,»json_error_code»:3,»json_error_message»:»Control character error, possibly incorrectly encoded»}}

    текст преобразован в енкодед:
    {«code»:»rest_invalid_json»,»message»:»\u041e\u0442\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u043e \u043d\u0435\u0432\u0435\u0440\u043d\u043e\u0435 \u0442\u0435\u043b\u043e \u0437\u0430\u043f\u0440\u043e\u0441\u0430 JSON.»,»data»:{«status»:400,»json_error_code»:4,»json_error_message»:»Syntax error»}}

    с горем пополам разобрался. получилось следующее:

    текс
    на другой строке

    приводим виду:
    текс\r\nна\ другой\ строке
    заменяем \r\n не тег новой строки <p>
    текс <p>на\ другой\ строке

    и удаляем все \
    текс <p>на другой строке

    такой текст публикуется

    возможно будет полезнее функция https://www.php.net/manual/ru/function.nl2br.php

    новая беда!
    если в тексте есть ссылка на ютуб видео, то она публикуется как обычный тек, а не трансформируется во вставленное видео, как при обычной публикации контента. если запись обновить(их админки), видео работает корректно.
    при попытке заменить урл на видео фреймом вставки, происходит отказ публикации.(так и должно быть)
    при попытке закодировать фрейм в urlencoded, код публикуется без раскодирования.
    Что посоветуете?

    может включить надо что-то? для декодировки

    При публикации через обычный редактор плагин оборачивает ютуб ссылку в html теги
    <div class="jetpack-video-wrapper"><span class="embed-youtube" style="text-align:center; display: block;"><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/7tAN95lKlBY?version=3&rel=1&fs=1&autohide=2&showsearch=0&showinfo=1&iv_load_policy=1&wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></span></div>
    при публикации через апи это не происходит.
    Если попробовать добавить этот код в тело поста, происходит ошибка.
    Если закодировать теги в encoded
    %0A%3Cdiv%20class%3D%22jetpack-video-wrapper%22%3E%3Cspan%20class%3D%22embed-youtube%22%20style%3D%22text-align%3Acenter%3B%20display%3A%20block%3B%22%3E%3Ciframe%20class%3D%27youtube-player%27%20type%3D%27text%2Fhtml%27%20width%3D%27640%27%20height%3D%27360%27%20src%3D%27https%3A%2F%2Fwww.youtube.com%2Fembed%2F1Nl7HNCiTFY%3Fversion%3D3%26%23038%3Brel%3D1%26%23038%3Bfs%3D1%26%23038%3Bautohide%3D2%26%23038%3Bshowsearch%3D0%26%23038%3Bshowinfo%3D1%26%23038%3Biv_load_policy%3D1%26%23038%3Bwmode%3Dtransparent%27%20allowfullscreen%3D%27true%27%20style%3D%27border%3A0%3B%27%3E%3C%2Fiframe%3E%3C%2Fspan%3E%3C%2Fdiv%3E%0A
    оно прям так и публикуется, без раскодировки.

    не пойму как с этим бороться

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «не публикует контент с помощью rest api» закрыта для новых ответов.