我正在尝试从响应中指定的utf-16编码返回的invokeHTTP方法解析XML。我在下面试过了,但我仍然无法通过这个错误
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")
查看响应。
我把"Accept"在http头文件中转换为'text/xml;charset=utf-16'
,然后转换为TO_CHARS(ws.result,'UTF-16')