我在php
中有一个处理$ _POST数据的函数。
使用curl我可以像这样发送我的数据:
curl --data "request=value2" http://localhost/mywebsite/
在php中:
if (isset($_POST)) {
echo '<look>' . $_POST . '</look>';
exit;
}
使用curl后,我可以在控制台中查看输出<look>Array</look>
。
但如何使用node.js
调用上述帖子请求这是我到目前为止所尝试的:
const postData = querystring.stringify({
'request': 'value2'
});
// the post options
var optionspost = {
host: 'localhost',
path: 'mywebsite/?request=value2',
method : 'POST',
port : 80,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Content-Length': Buffer.byteLength(postData)
}
};
console.info('Options prepared:');
//console.info(optionspost);
console.info('Do the POST call');
// do the POST call
var reqPost = http.request(optionspost, function(res) {
console.log("statusCode: ", res.statusCode);
// uncomment it for header details
//console.log("headers: ", res);
res.on('data', function(d) {
console.info('POST result:\n');
console.log(d);
var textChunk = d.toString('utf8');
console.log(textChunk);
console.info('\n\nPOST completed');
});
});
// write the json data
//reqPost.write(jsonObject);
reqPost.on('error', function(e) {
console.log("post error");
console.error(e);
});
reqPost.write(postData);
reqPost.end();
这是输出:
statusCode: 400
POST result:
<Buffer 3c 21 44 4f 43 54 59 50 45 20 48 54 4d 4c 20 50 55 42 4c 49 43 20 22 2d
2f 2f 49 45 54 46 2f 2f 44 54 44 20 48 54 4d 4c 20 32 2e 30 2f 2f 45 4e 22 3e .
. >
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
</p>
<hr>
<address>Apache/2.4.23 (Win64) PHP/5.6.25 Server at localhost Port 80</address>
</body></html>
POST completed
如何获得与curl相同的输出。请帮忙!
答案 0 :(得分:0)
您可以{/ 3}}使用
下面是如何使用请求模块的基本代码,你应该看看它提供了更多功能的模块。
var request = require('request');
request('http://www.google.com', function (error, response, body) {
console.log('error:', error); // Print the error if one occurred
console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
console.log('body:', body); // Print the HTML for the Google homepage.
});
希望这有帮助。
答案 1 :(得分:0)
或者,您也可以尝试使用 node-curl 包,它是curl命令的包装器,它将是完成任务的更简单方法。
在此处查看包裹。
https://www.npmjs.com/package/node-curl
希望这有帮助。