节点 xhr POST

nodejs xhr POST

我正在使用 nodejs 并尝试向服务器发出 POST 命令。我也在使用 node-xmlHttpRequest(drivedan 的模块)。我遇到内容类型问题并收到错误:

{
  "response":{
    "errorCode":"UNKNOWN_ERROR","message":"Content type 
    'text/plain;charset=UTF-8' not supported","detail":"Content type 
    'text/plain;charset=UTF-8' not supported"
  },"version":"1.0"
}

我需要内容类型为 JSON,而不是文本。我已经用 GET 测试了代码,它工作正常。

这是我的代码:

    var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
    var xhr = new XMLHttpRequest();
    var sys = require('util');
    var json_text2 = { "username": "admin","password": "-----" };
    var apicem_ip = "sandboxapic.cisco.com:9443";
    var apic_url = 'https://'+apicem_ip+'/api/v1/ticket';
    //- var xmlHTTP = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        sys.puts("State: " + this.readyState);

        if (this.readyState === 4) {
            sys.puts("Complete.\nBody length: " + this.responseText.length);
            sys.puts("Body:\n" + this.responseText);
        }
    };

    xhr.open("POST",apic_url,true);
    xhr.setRequestHeader("Content-type","application/json");
    xhr.setRequestHeader("Accept","application/json");
    xhr.responseType = 'JSON';
    xhr.send(JSON.stringify(json_text2));
    app.locals.apic_nd = xhr.responseText;

有什么想法吗?

多亏了 jfriend00 我让它工作了(不知道如何赞成他的评论。但这是我使用的代码:

var apicem_ip = "sandboxapic.cisco.com:9443";
var apic_url = 'https://'+apicem_ip+'/api/v1/ticket';

var request = require('request');

var options = {
  url: 'https://'+apicem_ip+'/api/v1/ticket',
  method: "POST",
  headers: {
    'Content-type': 'application/json'
  },
  body: '{ "username": "admin", "password": "----"}'
};

function callback(error, response, body) {
  console.log("callback function");
  if (!error) {
    var info = (JSON.parse(body));
    console.log(info);
    console.log("status 200");

  }
  else {
    console.log(JSON.parse(body));
  }
}

request.post(options, callback);