2

我有一个将接受 XML 形式的 POST 的 REST 端点。目前,当它尝试解码内容时,它会在 vendor/friendsofsymfony/rest-bundle/EventListener/BodyListener.php(第 115 行)中抛出“收到的无效 xml 消息”。

这是前三行代码。请注意 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;

    }
}
4

0 回答 0