如何使用Node原生的请求承诺进行XML正文/内容类型标头的POST?

时间:2018-06-28 18:51:16

标签: node.js xml xml-parsing request request-promise

我需要进行XML POST(我知道不要问它是政府...),并且我无法使它与本机的节点请求承诺一起工作。

我试图将我的XML字符串转换为缓冲区,String()、. toString等。如果我将json:true转换为POST,那么我认为这不是网络问题(当通过json传递xml字符串时)正确,它会发送一个json,例如{'variablename':'我要作为正文发送的XML字符串'})

这就是我正在使用的。在这里,我一直不休,感谢任何帮助。

理想情况下将是承诺/异步。

也许我应该寻找一个XMLHttp请求npm模块?

var request_promise_native_options = {
        method: 'POST',
        uri: 'http://requestbin.fullcontact.com/198flbs1',
        headers: {
            'User-Agent': 'Request-Promise',
            'Content-Type': 'text/xml'
            //'Content-Length': Buffer.byteLength(my_xml_string) //I've tried multiple ways to use this
        },
        body: {
            my_xml_string //also tried many ways here Buffer, String() etc
        },
        json: false // automatically stringifys body to json if true
    };

    request_promise(request_promise_native_options)
            .then(function (response) {
                console.log("success");
            })
            .catch(function (err) {
                console.log(err);
            })

1 个答案:

答案 0 :(得分:3)

对@ kevin-b表示感谢,以帮助我了解显而易见的内容。只需删除{}

var request_promise_native_options = {
    method: 'POST',
    uri: 'http://requestbin.fullcontact.com/198flbs1',
    headers: {
        'User-Agent': 'Request-Promise',
        'Content-Type': 'text/xml'
        'Content-Length': Buffer.byteLength(my_xml_string)
    },
    body: my_xml_string,
    json: false // automatically stringifys body to json if true
};