将遗留 ColdFusion 代码移植到 Node.js - cfhttp/request.js
Porting legacy ColdFusion code to Node.js - cfhttp/request.js
我是 Coldfusion 的主要开发人员,已经工作了 10 多年,但现在是时候做出改变了。我正在努力将一些旧的 Colfusion 9 代码移植到节点 js,我正在努力连接到第 3 方 API 以访问我们公司的数据。
这是连接到外部服务的当前 Coldfusion 代码:
<cfsavecontent variable="thiscontent">
<post>
<username>username@domain.com</username>
<password>Pa$$w0rd</password>
</post>
</cfsavecontent>
<cfhttp url="https://API.ENDPOINT" method="post" result="httpResponse" >
<cfhttpparam type="FormField" name="xml" value="#Trim(thiscontent)#" />
</cfhttp>
此代码可以找到并 returns 来自服务的预期 XML 对象。然而,有趣的是,如果我删除 'method="post"' 参数,我会得到与尝试连接节点时相同的错误,稍后会详细介绍。
对于节点,我正在使用 express.js 与端点进行交互。这是我正在使用的代码:
reqOpts = {
url: 'http://API.ENDPOINT',
method: 'post',
headers: {
'Content-Type': 'application/xml'
},
body: '<post><username>user@domain.com</username><password>Pa44w0rd</password></post>'
}
var getNew = request(reqOpts, function(err, resp, body){
console.log(body)
}) ;
然后return出现如下错误:
<?xml version="1.0"?>
<response><status>FAILURE</status><message>No XML string passed</message></response>
还记得我说过从 cfhttp 中删除 post 参数会导致同样的错误吗?我似乎无法让它在节点中工作。
我尝试过使用 request().form、request().auth 等,但都没有成功,总是一样的 NO XML STRING PASSED 错误。
如有任何帮助,我将不胜感激。
在您的 ColdFusion 代码中,您使用了一个名为 xml
的 FormField。
在 Node.js 中执行相同的操作,而不是将 XML 直接放在请求正文中:
reqOpts = {
url: 'http://API.ENDPOINT',
method: 'post',
headers: {
'Content-Type': 'application/xml'
},
form: {
xml: '<post><username>user@domain.com</username><password>Pa44w0rd</password></post>'
}
}
var getNew = request(reqOpts, function(err, resp, body) {
console.log(body)
}) ;
我是 Coldfusion 的主要开发人员,已经工作了 10 多年,但现在是时候做出改变了。我正在努力将一些旧的 Colfusion 9 代码移植到节点 js,我正在努力连接到第 3 方 API 以访问我们公司的数据。
这是连接到外部服务的当前 Coldfusion 代码:
<cfsavecontent variable="thiscontent">
<post>
<username>username@domain.com</username>
<password>Pa$$w0rd</password>
</post>
</cfsavecontent>
<cfhttp url="https://API.ENDPOINT" method="post" result="httpResponse" >
<cfhttpparam type="FormField" name="xml" value="#Trim(thiscontent)#" />
</cfhttp>
此代码可以找到并 returns 来自服务的预期 XML 对象。然而,有趣的是,如果我删除 'method="post"' 参数,我会得到与尝试连接节点时相同的错误,稍后会详细介绍。
对于节点,我正在使用 express.js 与端点进行交互。这是我正在使用的代码:
reqOpts = {
url: 'http://API.ENDPOINT',
method: 'post',
headers: {
'Content-Type': 'application/xml'
},
body: '<post><username>user@domain.com</username><password>Pa44w0rd</password></post>'
}
var getNew = request(reqOpts, function(err, resp, body){
console.log(body)
}) ;
然后return出现如下错误:
<?xml version="1.0"?>
<response><status>FAILURE</status><message>No XML string passed</message></response>
还记得我说过从 cfhttp 中删除 post 参数会导致同样的错误吗?我似乎无法让它在节点中工作。
我尝试过使用 request().form、request().auth 等,但都没有成功,总是一样的 NO XML STRING PASSED 错误。
如有任何帮助,我将不胜感激。
在您的 ColdFusion 代码中,您使用了一个名为 xml
的 FormField。
在 Node.js 中执行相同的操作,而不是将 XML 直接放在请求正文中:
reqOpts = {
url: 'http://API.ENDPOINT',
method: 'post',
headers: {
'Content-Type': 'application/xml'
},
form: {
xml: '<post><username>user@domain.com</username><password>Pa44w0rd</password></post>'
}
}
var getNew = request(reqOpts, function(err, resp, body) {
console.log(body)
}) ;