使用node-libcurl curl JSON帖子

u1ehiz5o  于 2022-11-13  发布在  其他
关注(0)|答案(1)|浏览(180)

我使用node-libcurl将JSON发布到URL并接收回JSON。
我在PHP上测试了CURL,它工作正常。
PHP代码如下

$data = array('user' => $us, 'pwd' => $cl);
$data_string = json_encode($data);

$ch = curl_init('http://52.234.214.55:9001/autenticacion/externo');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen($data_string))
);

$result = curl_exec($ch);

现在,我想让它在如下所示的节点路由上工作:

app.post('/login2',function(req,res){

  //formato JSON ACHS
  var cvalue = {
      'user': 'user',
      'pwd': 'pass'
    }

    var curl = new Curl();

    curl.setOpt('URL', 'http://52.234.214.55:9001/autenticacion/externo');
    curl.setOpt('CURLOPT_CUSTOMREQUEST', "POST");
    curl.setOpt('CURLOPT_POSTFIELDS', cvalue);
    curl.setOpt('CURLOPT_RETURNTRANSFER', true);
    curl.setOpt('CURLOPT_HTTPHEADER', array(
        'Content-Type: application/json',
        'Content-Length: ' . strlen(cvalue)));

curl.on('end', function(statusCode, body, headers) {

    console.info(statusCode);
    console.info('---');
    console.info(body.length);
    console.info('---');
    console.info(this.getInfo( 'TOTAL_TIME'));

    this.close();
});

curl.on('error', curl.close.bind(curl));
curl.perform();

})

这不起作用我得到以下错误:
给定的选项未知。第一个参数必须是选项内部ID或选项名称。可以使用Curl.选项常量。at Curl.setOpt(C:\Users\Ingolf\workspace\w2_achs 2\node_modules\node-libcurl\lib\Curl.js:980:11)at C:\Users\Ingolf\workspace\w2_achs 2\index.js:130:10
这就指向

curl.setOpt('CURLOPT_CUSTOMREQUEST', "POST");

根据文档中的建议和发现,我将其更改为:

curl.setOpt(Curl.option.URL, 'http://52.234.214.55:9001/autenticacion/externo');
curl.setOpt(Curl.option.CUSTOMREQUEST, "POST");
curl.setOpt(Curl.option.CURLOPT_POSTFIELDS, cvalue);
curl.setOpt(Curl.option.CURLOPT_RETURNTRANSFER, true);
curl.setOpt(Curl.option.CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Content-Length: ' . strlen(cvalue)));

这会得到错误:
给定的选项未知。第一个参数必须是选项内部ID或选项名称。可以使用Curl.选项常量。at Curl.setOpt(C:\Users\Ingolf\workspace\w2_achs 2\node_modules\node-libcurl\lib\Curl.js:980:11)at C:\Users\Ingolf\workspace\w2_achs 2\index.js:131:10
其指向

curl.setOpt(Curl.option.CURLOPT_POSTFIELDS, cvalue);

谢谢你的帮助。

gstyhher

gstyhher1#

请查看node-libcurl文档:https://github.com/JCMais/node-libcurl/blob/HEAD/api.md#curloption--enum
更具体地说,您需要使用枚举选项,而不是cURL兼容选项字符串:
CURLOPT_URL变为Curl.选项.URL
试试看:

curl.setOpt(Curl.option.CUSTOMREQUEST, "POST");

相关问题