使用node.js ipp模块的CUPS-Get-Devices上的IPP Missing属性

我遇到了CUPS-Get-Devices的Missing必需属性的问题。 基本上我想使用https://www.npmjs.org/package/ipp获得IPP和CUPS的可用打印机列表。

我已经实现了CUPS-Get-Devices到软件包,因为它不支持包的属性,但我得到它的工作。 问题是响应以“状态消息”响应:“缺less必需的属性”。 而不是给我的打印机列表。

var uri = "http://localhost:631" var data = ipp.serialize({ "operation": "CUPS-Get-Printers", "operation-attributes-tag": { "attributes-charset": 'utf-8', "attributes-natural-language": 'en-us', "limit": 10 } }); ipp.request(uri, data, function(err, res){ if(err){ return console.log(err); } console.log(JSON.stringify(res,null,2)); }); 

答复是

 { "version": "2.0", "statusCode": "client-error-bad-request", "id": 67392993, "operation-attributes-tag": { "attributes-charset": "utf-8", "attributes-natural-language": "en-us", "status-message": "Missing required attributes." } } 

文档没有提及其他所需的参数http://www.cups.org/documentation.php/spec-ipp.html#CUPS_GET_PRINTERS

有人知道问题在哪里吗? 谢谢!

       

网上收集的解决方案 "使用node.js ipp模块的CUPS-Get-Devices上的IPP Missing属性"

这个代码适用于我,有一个未经修改的ipp库和CUPS 1.7.3。 我最好的猜测是,当你修改库时你犯了一个错字。

 var ipp = require('ipp'); // Add missing operation code ipp.operations['CUPS-Get-Printers'] = 0x4002; // The rest is identical to your code: var uri = "http://localhost:631"; var data = ipp.serialize({ "operation": "CUPS-Get-Printers", "operation-attributes-tag": { "attributes-charset": 'utf-8', "attributes-natural-language": 'en-us', "limit": 10 } }); ipp.request(uri, data, function(err, res){ if(err){ return console.log(err); } console.log(JSON.stringify(res,null,2)); });