Nodejs 如何post xml 数据 以及 服务端 如何获取 xml 数据
Nodejs 如何post xml 数据 以及 服务端 如何获取 xml 数据
js\n var http = require(“http”); var xml2js = require(‘xml2js’); var json = { MsgType:“text”, Version:“1.0.0”, AppId:“rs00004001” }
var b = new xml2js.Builder();
var xml = b.buildObject(json);
console.log(xml);
var opurl = {
host:'test.com',
port:8089,
path:"/trust",
method:"POST",
data:xml,
headers:{
"Connection":"Keep-Alive",
"Content-Type":'application/xml;charset=utf-8',
"Content-length":xml.length
}
}
http.get(opurl,function(res){
//console.log('a');
//res.send(xml)
res.setEncoding('utf-8')
res.on('data',function(d){
console.log(d);
})
})\n
服务端怎么获取 到 xml 数据呢?
是这样得吗
当然可以。以下是关于如何使用 Node.js 发送和接收 XML 数据的详细解答。
客户端发送 XML 数据
首先,我们来创建一个客户端脚本,该脚本将使用 http
模块发送一个包含 XML 数据的 POST 请求。
// 引入所需的模块
const http = require('http');
const xml2js = require('xml2js');
// 创建 JSON 对象
const json = {
MsgType: "text",
Version: "1.0.0",
AppId: "rs00004001"
};
// 使用 xml2js 构建器将 JSON 转换为 XML 字符串
const builder = new xml2js.Builder();
const xml = builder.buildObject(json);
console.log(xml); // 打印生成的 XML 字符串
// 设置请求选项
const options = {
hostname: 'test.com',
port: 8089,
path: '/trust',
method: 'POST',
headers: {
'Content-Type': 'application/xml; charset=utf-8',
'Content-Length': Buffer.byteLength(xml, 'utf-8'),
'Connection': 'keep-alive'
}
};
// 创建请求对象并发送数据
const req = http.request(options, (res) => {
let data = '';
// 接收响应数据
res.on('data', (chunk) => {
data += chunk;
});
// 当所有数据被接收后打印
res.on('end', () => {
console.log(data);
});
});
// 在请求中写入 XML 数据
req.write(xml);
// 结束请求
req.end();
服务端接收 XML 数据
接下来,我们需要编写一个简单的服务端脚本来接收并解析这些 XML 数据。
// 引入所需的模块
const http = require('http');
const xml2js = require('xml2js');
// 创建 HTTP 服务器
const server = http.createServer((req, res) => {
if (req.method === 'POST') {
const parser = new xml2js.Parser();
let body = '';
// 接收数据
req.on('data', (chunk) => {
body += chunk;
});
// 数据接收完毕
req.on('end', () => {
parser.parseString(body, (err, result) => {
if (err) {
console.error(err);
res.writeHead(500, { 'Content-Type': 'text/plain' });
res.end('Internal Server Error');
return;
}
// 解析结果
console.log(result);
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('XML received and parsed successfully!');
});
});
} else {
res.writeHead(405, { 'Content-Type': 'text/plain' });
res.end('Method Not Allowed');
}
});
// 监听端口
server.listen(8089, 'test.com', () => {
console.log('Server is running on port 8089');
});
总结
上述代码展示了如何使用 Node.js 发送和接收 XML 数据。客户端使用 http.request
方法发送包含 XML 数据的 POST 请求。服务端则通过监听 POST 请求,并使用 xml2js
模块解析接收到的 XML 数据。希望这对你有所帮助!
你的res.on('data', onchunk)
事件用得有问题,如果服务器是用chunked响应的,那么你console出来的只有第一个chunk的数据格式 :p
哥们儿,你还是把拿到的数据做个拼接把,每次data event事件出发之后,你输出然后数据就丢弃了。。。
这个知道 var data = "" event data data+=chunked; event end console.log(data);
现在就是这样 post xml 无法获取到
现在就是 data:xml 是这样对吗? 现在是怀疑这块
为了回答这个问题,我们将分为两个部分来处理:客户端如何发送 XML 数据以及服务端如何接收并解析 XML 数据。
客户端发送 XML 数据
首先,我们需要使用 http
模块来创建一个 POST 请求,并将 XML 数据作为请求体发送。以下是示例代码:
const http = require('http');
const xml2js = require('xml2js');
const json = {
MsgType: "text",
Version: "1.0.0",
AppId: "rs00004001"
};
const builder = new xml2js.Builder();
const xml = builder.buildObject(json);
const options = {
hostname: 'test.com',
port: 8089,
path: '/trust',
method: 'POST',
headers: {
'Content-Type': 'application/xml; charset=utf-8',
'Content-Length': Buffer.byteLength(xml)
}
};
const req = http.request(options, (res) => {
res.setEncoding('utf-8');
res.on('data', (chunk) => {
console.log(`Response: ${chunk}`);
});
});
req.on('error', (e) => {
console.error(`Problem with request: ${e.message}`);
});
req.write(xml);
req.end();
服务端接收并解析 XML 数据
服务端可以使用 http
模块监听一个端口,并在接收到数据时进行解析。以下是示例代码:
const http = require('http');
const xml2js = require('xml2js');
const server = http.createServer((req, res) => {
let xmlData = '';
req.on('data', (chunk) => {
xmlData += chunk;
});
req.on('end', () => {
const parser = new xml2js.Parser();
parser.parseString(xmlData, (err, result) => {
if (err) {
res.writeHead(400, { 'Content-Type': 'text/plain' });
res.end('Invalid XML');
} else {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end(JSON.stringify(result));
}
});
});
});
server.listen(8089, () => {
console.log('Server is running on port 8089');
});
解释
- 客户端:使用
http.request
发送一个 POST 请求,并通过req.write
将 XML 数据写入请求体。 - 服务端:监听
/trust
路径上的 POST 请求,收集所有数据片段并将它们拼接成完整的 XML 字符串。然后使用xml2js.Parser
解析 XML 数据为 JSON 对象,并返回给客户端。
确保在客户端和服务端都安装了 xml2js
包,可以通过 npm install xml2js
进行安装。