我正在使用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.option常量。 在Curl.setOpt(C:\ Users \ Ingolf \ workspace \ w2_achs2 \ node_modules \ node-libcurl \ lib \ Curl.js:980:11) 在C:\ Users \ Ingolf \ workspace \ w2_achs2 \ 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.option常量。 在Curl.setOpt(C:\ Users \ Ingolf \ workspace \ w2_achs2 \ node_modules \ node-libcurl \ lib \ Curl.js:980:11) 在C:\ Users \ Ingolf \ workspace \ w2_achs2 \ index.js:131:10
夹心指向
curl.setOpt(Curl.option.CURLOPT_POSTFIELDS, cvalue);
感谢您的帮助。
答案 0 :(得分:0)
查看node-libcurl
文档:
https://github.com/JCMais/node-libcurl/blob/HEAD/api.md#curloption--enum
更具体地说,您需要使用枚举选项而不是cURL兼容选项字符串:
CURLOPT_URL变为Curl.option.URL
尝试一下:
curl.setOpt(Curl.option.CUSTOMREQUEST, "POST");