当我使用Postman将XML有效负载发布到服务器时,我得到了完整的响应。
<?xml version="1.0" encoding="UTF-8"?>
<userResponse>
<status>1</status>
<message></message>
<results>
<account>
<email>foo@example.com</email>
<username>developer</username>
<status>1</status>
</account>
<contact>
<firstName>foo</firstName>
<lastName>bar</lastName>
</contact>
</results>
</userResponse>
但是当我通过node-red http请求提交相同的有效负载时,我得到了部分响应。
msg.payload = '<?xml version="1.0" encoding="UTF-8"?><userRequest><authentication><username>foo</username><password>bar</password></authentication><action>get</action></userRequest>';
msg.headers = {};
msg.headers['content-type'] = 'application/xml';
return msg;
// Response
<?xml version="1.0" encoding="UTF-8"?>
<userResponse>
<status>1</status>
<message></message>
</userResponse>
流程非常简单。 http in,函数定义上面的头和有效负载,http post,http response。
此流程中根本没有处理响应。
为什么node-red可能会删除&#39;结果&#39;从回应?
到目前为止,我的猜测是:
我在邮递员的回应中注意到两件事:
那些人提出问题:
我不确定从这里看哪里。我可以做些什么测试来缩小范围?
更新:似乎不是标题或超时导致问题
我设置了另一个流来模拟响应。以相同的方式调用它可以正确地获取整个XML主体。添加2秒延迟也可以正确地获取完整的正文,并且当我从Postman调用它时,我的客户端API将返回所有相同的XML数据。
客户端将内容类型的响应标头更改为text / xml。这没有改变什么节点红色作为响应返回。内部数据仍然缺失。
所以,它不是数据,因为如果我使用Postman请求它并将其复制粘贴到新流的msg中,并在请求时返回它,则node-red显示所有数据。
发送标头的情况似乎并不重要。
我还没有将gzip作为原因消除,但似乎它实际上并没有被编码,因为node-red正在返回一些msg。
我需要一些关于如何跟踪请求和响应的想法,并找出它与模拟响应的不同之处。
如何在node-red post请求中调试msg流?