问题描述
我正在尝试从 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')
来解决它