最近,我一直在尝试使用NodeJS模拟小门POST请求。
也就是说,通过在当前网页中上传表单(例如 site 1 ),我希望nodeJS将表单数据发送到另一个站点< / wick>(例如 site 2 ),它是使用wicket构建的,并将 site 2 的html正文返回到 site 1 的服务器(即nodeJS)
我用来测试的 site 2 来自github:
https://github.com/bitstorm/Wicket-tutorial-examples/tree/wicket-6.x
请注意,正在使用 wicket 6.x (实际上我要6.12.0)。
在我的计算机上,它正在localhost:8080
上运行
我拥有的html是:
<body ng-app="App" ng-controller="Controller">
username: <input type='text' ng-model="User.name"><br>
password: <input type='text' ng-model="User.pass"><br>
<button ng-click="login(User)">Submit</button>
</body>
我拥有的AngularJS是:
var commodity_app = angular.module('App', []);
commodity_app.controller('Controller', function($scope, $http, $window){
$scope.User = {name: "", pass: ""};
$scope.login = function(User){
$http.post("/login", User).then(function(response){
alert(response.body);
}, function(response){
alert("Error");
});
};
});
这是NodeJS的一部分,我希望它模拟POST到wicket并返回wicket将其重定向到的html正文:
var express = require('express');
var request = require('request');
var router = express.Router();
router.post("/login", function(req, res){
console.log(req.body);
var url = 'http://localhost:8080/wicket/bookmarkable/org.wicketTutorial.SignInPage?-1.IFormSubmitListener-form';
var bodyString = "form1_hf_0=&username=wicketer&password=wicketer";
var forms = {"form1_hf_0": '',"username": "wicketer", "password" : 'wicketer'}
var header = {"Content-Length": "47",
"Content-Type": "application/x-www-form-urlencoded",
}
request.post({url:url, followAllRedirects: true, form: bodyString, headers: header}, function(error, response, body){
console.log(response.statusCode);
console.log(response.body);
res.send({msg: ""});
});
});
module.exports = router;
我尝试使用body
,form
,formData
发送数据,但是它不起作用。
有人可以帮我解决这个问题吗?