我有一个将接受 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;
}
}