Jay*_*Jay 5 javascript node.js electron
使用 net.request 发布数据不起作用。它正在到达 URL。但是没有发布数据。我的代码如下。请帮我解决这个问题。
const net = remote.net;
const querystring = require('querystring');
//**
var postData = querystring.stringify({
'username' : 'test',
'password': 'test'
});
const request = net.request({
method: 'POST',
url: 'http://127.0.0.1/post.php',
});
request.on('error', (error) => {});
request.on('response', (response) => {});
request.write(postData);
request.end();
Run Code Online (Sandbox Code Playgroud)
使用时net.request需要request.end()在写入数据后调用以确保请求数据已发送。
您需要调用的原因request.end()是允许在实际发出请求之前对请求的标头和正文进行更改。
request()将连接并等待request.end()一次性发送标头和正文。
另外,如果您想了解代码在做什么,那么忽略响应永远不是一个好主意。
您确实应该挂钩该request.response事件以查看发生了什么错误(如果有),如下所示:
request.on('response', (response) => {
console.log(`STATUS: ${response.statusCode}`)
console.log(`HEADERS: ${JSON.stringify(response.headers)}`)
})
Run Code Online (Sandbox Code Playgroud)
您的代码应为(从Electron API 文档中的net示例代码扩展而来):
const request = net.request({
method: 'POST',
url: 'http://127.0.0.1/post.php',
})
let body = ''
request.on('response', (response) => {
// check response.statusCode to determine if the request succeeded
console.log(`STATUS: ${response.statusCode}`)
console.log(`HEADERS: ${JSON.stringify(response.headers)}`)
// capture body of response
// - can be called more than once for large result
response.on('data', (chunk) => {
console.log(`BODY: ${chunk}`)
body += chunk.toString()
})
// when response is complete, print body
response.on('end', () => {
console.log(`BODY: ${body}`)
})
})
request.write(postData)
request.end()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7709 次 |
| 最近记录: |