如我上面的更新所述,我最初的问题是
不
使用
https
和
Web服务正在阻止没有
User-Agent
标题。至于作为响应返回的WSDL文件,我错误地使用了
GET
在我的选项中,忘记更正它。最后,我怀疑在将XML写入主体时发生了什么事情,发现了一个问题-我找到了答案
here
. 以下是正确的代码:
const https = require('https')
const fs = require('fs')
const xml = fs.readFileSync('latlonzipcode.xml','utf-8')
const options = {
hostname : 'graphical.weather.gov',
port : 443,
path : '/xml/SOAP_server/ndfdXMLserver.php',
method : 'POST',
headers : {
'User-Agent' : 'sampleTest',
'Content-Type' : 'text/xml;charset=utf-8',
'soapAction' : 'https://graphical.weather.gov/xml/DWMLgen/wsdl/ndfdXML.wsdl#LatLonListZipCode'
}
}
var obj = https.request(options,(resp)=>{
let data = ''
fs.writeFile('server.log',resp.statusCode+"\n"+JSON.stringify(resp.headers),(err)=>{
err ? console.log(err) : console.log('log file written')
})
resp.on('data',(chunk)=>{
data += chunk
})
resp.on('end',()=>{
fs.writeFile('soap-response.xml',data,(err)=>{
err ? console.log(err) : console.log('data file written')
})
console.log(data)
})
}).on('error',(err)=>{
console.log("Error: " + err.message)
})
obj.end(xml) ? console.log('op success') : console.log('error!')
node.js终于让我对javascript感到兴奋。谢谢。