使用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();
答案 0 :(得分:1)
我知道已经有一段时间了。但是对于下一个会有同样问题的人。
别忘了您必须在标头中声明“ postData”的大小。 例如:
var postData = JSON.stringify({"q" : sqlQuery });
const request = net.request({
method: 'POST',
protocol: 'http:',
hostname: '127.0.0.1',
port: 3000,
path: '/select',
headers: {
'Content-Type': 'application/json',
'Content-Length': postData.length
}
})
request.on('response', (response) => {
.... // Sommething
})
request.write(postData)
request.end()
答案 1 :(得分:0)
使用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)}`)
})
您的代码应该阅读(从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()