如何为nodejs设置原始发布请求

时间:2016-12-25 00:11:21

标签: node.js curl

我正在尝试从nodejs发送post请求,但无法通过节点发送。我已经在Postman上测试过的请求,

这是我的Nodejs代码:

var rp = require('request-promise');
        return rp({
            url: Url,
            method: "POST",
            headers: {
                "content-type": "application/x-www-form-urlencoded",
            },
            body: "Data=%3CSearchRequest%3E%0A%20%20%20%20%3CLoginDetails%3E%0A%20%20%20%20%20%20%20%20%3CLogin%3Etour%20booking%3C%2FLogin%3E%0A%20%20%20%20%20%20%20%20%3CPassword%3Exmltest%3C%2FPassword%3E%0A%20%20%20%20%3C%2FLoginDetails%3E%0A%20%20%20%20%3CSearchDetails%3E%0A%20%20%20%20%20%20%20%20%3CArrivalDate%3E2017-08-17%3C%2FArrivalDate%3E%0A%20%20%20%20%20%20%20%20%3CDuration%3E1%3C%2FDuration%3E%0A%20%20%20%20%20%20%20%20%3CRegionID%3E616%3C%2FRegionID%3E%0A%20%20%20%20%20%20%20%20%3CMealBasisID%3E0%3C%2FMealBasisID%3E%0A%20%20%20%20%20%20%20%20%3CMinStarRating%3E0%3C%2FMinStarRating%3E%0A%20%20%20%20%20%20%20%20%3CRoomRequests%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CRoomRequest%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAdults%3E2%3C%2FAdults%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildren%3E2%3C%2FChildren%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CInfants%3E0%3C%2FInfants%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAges%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAge%3E8%3C%2FAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAge%3E8%3C%2FAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAges%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRoomRequest%3E%0A%20%20%20%20%20%20%20%20%3C%2FRoomRequests%3E%0A%20%20%20%20%20%20%20%20%3CRoomRequests%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CRoomRequest%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAdults%3E1%3C%2FAdults%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildren%3E0%3C%2FChildren%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CInfants%3E0%3C%2FInfants%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRoomRequest%3E%0A%20%20%20%20%20%20%20%20%3C%2FRoomRequests%3E%0A%20%20%20%20%3C%2FSearchDetails%3E%0A%3C%2FSearchRequest%3E",
            form: false,
        }).then(function (body) {
            console.log(body);
        });

这是我的邮递员代码:

POST /xml/book.aspx HTTP/1.1 Host: asmsajib.me Content-Type: application/x-www-form-urlencoded Cache-Control: no-cache Postman-Token: 9b9e6ea7-f7cb-f2a2-3fd7-5222cd9e0654 Data=%3CSearchRequest%3E%0A%20%20%20%20%3CLoginDetails%3E%0A%20%20%20%20%20%20%20%20%3CLogin%3Etour%20booking%3C%2FLogin%3E%0A%20%20%20%20%20%20%20%20%3CPassword%3Exmltest%3C%2FPassword%3E%0A%20%20%20%20%3C%2FLoginDetails%3E%0A%20%20%20%20%3CSearchDetails%3E%0A%20%20%20%20%20%20%20%20%3CArrivalDate%3E2017-08-17%3C%2FArrivalDate%3E%0A%20%20%20%20%20%20%20%20%3CDuration%3E1%3C%2FDuration%3E%0A%20%20%20%20%20%20%20%20%3CRegionID%3E616%3C%2FRegionID%3E%0A%20%20%20%20%20%20%20%20%3CMealBasisID%3E0%3C%2FMealBasisID%3E%0A%20%20%20%20%20%20%20%20%3CMinStarRating%3E0%3C%2FMinStarRating%3E%0A%20%20%20%20%20%20%20%20%3CRoomRequests%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CRoomRequest%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAdults%3E2%3C%2FAdults%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildren%3E2%3C%2FChildren%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CInfants%3E0%3C%2FInfants%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAges%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAge%3E8%3C%2FAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAge%3E8%3C%2FAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAge%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FChildAges%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRoomRequest%3E%0A%20%20%20%20%20%20%20%20%3C%2FRoomRequests%3E%0A%20%20%20%20%20%20%20%20%3CRoomRequests%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3CRoomRequest%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CAdults%3E1%3C%2FAdults%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CChildren%3E0%3C%2FChildren%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CInfants%3E0%3C%2FInfants%3E%0A%20%20%20%20%20%20%20%20%20%20%20%20%3C%2FRoomRequest%3E%0A%20%20%20%20%20%20%20%20%3C%2FRoomRequests%3E%0A%20%20%20%20%3C%2FSearchDetails%3E%0A%3C%2FSearchRequest%3E

1 个答案:

答案 0 :(得分:0)

您需要为原始帖子设置Content-Length,然后我将标题更改为初始上限。

rp({
  url: Url,
  method: "POST",
  headers: {
    "Content-Type": "application/x-www-form-urlencoded",
    "Content-Length": Buffer.byteLength(data) // your data
  },
  form: false
}).then(function (body) {
  console.log(body);
}).catch((err) => {
  console.log(err);
});