Недопустимое сообщение xml, полученное, когда данные публикации xml включают DOCTYPE - PullRequest
1 голос
/ 17 апреля 2019

Я для конечной точки REST, которая будет принимать POST в форме XML. В настоящее время он выдает «Invalid xml message полученный» в vendor / friendsofsymfony / rest-bundle / EventListener / BodyListener.php (строка 115) при попытке декодировать содержимое.

Вот первые три строки кода. Обратите внимание, что сам XML проверяет правильность.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SupplierSyncMessage SYSTEM "http://integrations.sciquest.com/app_docs/dtd/supplier/TSMSupplier.dtd">
<SupplierSyncMessage version="1.0">

Лучшее, что я могу сказать, это оскорбительная часть:

<!DOCTYPE SupplierSyncMessage SYSTEM "http://integrations.sciquest.com/app_docs/dtd/supplier/TSMSupplier.dtd">

Если я удалю эту строку из моего тестового сообщения, запрос будет обработан.

У меня не будет широты для получения XML без этой строки, так есть ли конфигурация или что-то, что скажет декодеру игнорировать его? Есть ли другой конфиг, который говорит ему использовать .dtd для проверки XML?

Есть идеи, что мне не хватает ... Не совсем понятно, с чего начать.

Добавление кода контроллера.


use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;

class DefaultController
{
    /**
     * Retrieves data via POST
     *
     * @Route("/api/import", methods={"POST"})
     *
     *
     * @param Request $request
     * @return \Symfony\Component\HttpFoundation\JsonResponse
     * @throws \Exception
     */
    public function getXML(Request $request) {

        print_r($request); exit;

    }
}
...