首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Firebase函数中返回XML

在Firebase函数中返回XML
EN

Stack Overflow用户
提问于 2018-08-14 17:30:15
回答 3查看 1.8K关注 0票数 3

我正在尝试设置一个返回xml的云函数。我能够创建和记录xml,但是当我试图返回它时,它会崩溃,并出现以下错误。

(/var/tmp/worker/node_modules/express/lib/response.js:1119:12) (/var/tmp/worker/node_modules/express/lib/response.js:260:14) at ServerResponse.json (/var/tmp/worker/node_modules/express/lib/response.js:158:21) at cors (/user_code/index )将循环结构转换为Object.stringify (原生)的JSON结构(/user_code/node_modules/cors/lib/index.js:188:7) at /user_code/node_modules/cors/lib/index.js:224:17 at originCallback (/user_code/node_modules/cors/lib/index.js:214:15) at /user_code/node_modules/cors/lib/index.js:219:13 at optionsCallback (/user_code/节点_模块/cors/lib/index.js:199:9)

我的函数

代码语言:javascript
复制
exports.sendXMLResponeSample = functions.https.onRequest((request, response) => {
  cors(request, response, () => {
    // import xmlbuilder
    const builder = require('xmlbuilder');
    // create my object to convert to xml
    var myFeedObject = {
      "somekey": "some value",
      "age": 59,
      "eye color": "brown"
    }
    // convert myFeedObject to xml
    const feed = builder.create(myFeedObject, { encoding: 'utf-8' })
    console.log("feed.end({ pretty: true }) = (below)");
    console.log(feed.end({ pretty: true }));
    // return xml
    return response.send(200, feed) // <<< error occurs here
  })
})

我相信这个错误意味着firebase云函数期望我在响应中返回一个JSON对象,而不是一个xml对象,但是我不知道如何告诉它在响应中期望一个xml对象。

有人知道如何在防火墙云函数中返回xml对象吗?

编辑:对象被转换为xml,没有任何问题。当尝试返回xml对象时会发生此错误。

EN

回答 3

Stack Overflow用户

发布于 2020-03-04 05:05:28

您可以在云函数返回给调用者的响应对象上使用.contentType(type: string)

就像这样:

代码语言:javascript
复制
res.status(200)
   .contentType('text/xml; charset=utf8')
   .send(xmlString);
票数 1
EN

Stack Overflow用户

发布于 2018-08-14 21:29:26

您可以安装对象到xml库,然后将响应头中的响应数据类型设置为text/XML,类似于res.header(‘Content’,'text/xml')。

票数 0
EN

Stack Overflow用户

发布于 2018-10-21 18:17:02

这就是我要做的。

代码语言:javascript
复制
  const xmlString =
          '<?xml version="1.0" encoding="UTF-8"?><Response><Message><Body>This is the 
  response</Body></Message></Response>';
        res
          .set("Content-Type", "text/xml; charset=utf8")
          .status(200)
          .send(xmlString);

为我工作。我确信有一种更好的方法可以将XML转换为字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51846874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档