0

这可能是我忽略的一些愚蠢的事情,但我正在尝试使用request-promise-nativePOST 到表单,并且我得到的响应看起来像我发送的表单数据是空白的。

示例:这适用于标准request

const request = require('request');
request.post({
    url:'http://tycho.usno.navy.mil/cgi-bin/sidereal2-post.sh',
    form: {
        city: 'Santa Cruz',
        state: 'CA'
}
},
    function(err,httpResponse,body){
        if (err) {
         return console.log("Error: " + err);
        }
     console.log("got: " + body);
 });

正确产生:

<html>
<title>Local Apparent Sideral Time </title>
<body>
<center>
<HR><h1>Local Apparent Sidereal Time</h1><HR>
<TABLE BORDER=4 ALIGN=CENTER VALIGN=CENTER CELLPADDING=5>
<TR><TH> SANTA CRUZ              , CA</TH>
<TR><TH> Longitude -122.04 degrees </TH>
<TR><TD ALIGN=CENTER><H1> 02:56 LST </H1></TD>
</TABLE>
</center>
</body>
</html>

但是这段代码

const rp = require('request-promise-native');

const options = {
    method: 'POST',
    uri: 'http://tycho.usno.navy.mil/cgi-bin/sidereal2-post.sh',
    formData: {
        city: 'Santa Cruz',
        state: 'CA'
    },
};

rp(options)
    .then(function (body) {
        // POST succeeded
        console.log("got: "
        + body);
    })
    .catch(function (err) {
        // POST failed...
        console.log("ERROR: " + err);
    });

产生这个结果,就好像它没有得到 formData:

<html>
<title>Local Apparent Sideral Time </title>
<body>
<center>
<HR><h1>Local Apparent Sidereal Time</h1><HR>
<HR><h1>Coordinates for                         , FO not found</h1><HR>
</center>
</body>
</html>

我是否忘记了括号或标点符号之类的?在我看来,这与request-promise 文档中的示例相同。

4

1 回答 1

0

也许这对你有用

    const rp = require('request-promise-native');

    const fetchData = async () => {
       const response = await rp.post('http://tycho.usno.navy.mil/cgi-bin/sidereal2-post.sh', {
           form: {
              city: 'Santa Cruz',
              state: 'CA'
           }
        });
     };
于 2022-01-03T06:36:33.870 回答