为上下文项构建源时出错 org.xml.sax.SAXParseException;行号:1;列数:57;序言中不能有内容

问题描述

我正在尝试从 invokeHTTP 方法解析 XML,该方法以响应中指定的 utf-16 编码返回。 我已经在下面尝试过,但我仍然无法克服这个错误

select request.* from  (EXEC model.invokeHttp(action => 'POST',endpoint => 'url',contentType => 'application/x-www-form-urlencoded;charset=utf-8',headers => jsonObject('application/x-www-form-urlencoded;charset=utf-8' as "Content-Type",'utf-8' as "Accept-Charset",jsonArray('gzip','deflate') as "Accept-Encoding",'bearer token' as "App-Authorization"),request => 'payload')) AS ws,XMLTABLE(XMLNAMESPACES(DEFAULT 'url'),'/path' PASSING XMLPARSE(DOCUMENT TO_CHARS(ws.result,'utf-8') WELLFORMED)  columns
            Name string PATH 'FirstName'
       ) AS request

我已经尝试在 VDB 中为翻译器指定编码,还是一样

<translator name="rest" type="ws">
                <property name="DefaultBinding" value="HTTP"/>
                <property name="DefaultServiceMode" value="MESSAGE"/>
                <property name="encoding" value="UTF-16"/>
</translator>

回复:

<?xml version="1.0" encoding="UTF-16" standalone="yes"?>

解决方法

首先确保您得到了您期望的响应,或者您可以打开用于请求/响应日志记录 http://teiid.github.io/teiid-documents/master/content/admin/Web_Service_Data_Sources.html 的日志记录,或者只是执行以下内容:

TO_CHARS(ws.result,'utf-8')

查看回复。

,

我通过在 http 标头中将“接受”作为 'text/xml;charset=utf-16' 然后转换 TO_CHARS(ws.result,'UTF-16') 来解决它

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...