调用ConnectWise REST API遇“Length cannot be less than zero”错误求助
解决ConnectWise REST API调用错误及配置疑问
一、"Length cannot be less than zero"错误排查
这个错误通常是服务端解析请求时遇到格式异常导致的,结合你的认证方式,重点检查以下几点:
手动Base64编码的正确性
正确的认证字符串格式是:{companyId}+{publicKey}:{privateKey},注意:- 加号是直接拼接,不需要URL编码
- 对整个字符串进行Base64编码时,确保没有额外的换行符或空格(部分Base64工具会自动添加换行,导致解码后格式错误)
- 构造的
Authorization头格式应为:Basic {Base64编码后的字符串}
Postman Basic Auth方式的问题
Postman的内置Basic Auth会自动对用户名中的特殊字符(比如加号)进行URL编码,而ConnectWise API要求用户名里的加号保持原始字符,因此会导致未授权。解决方法是:- 手动计算Base64编码后的字符串,直接在Headers中添加
Authorization字段,不要使用Postman的Basic Auth选项
- 手动计算Base64编码后的字符串,直接在Headers中添加
请求头完整性检查
确认请求头中同时包含:clientid:你的ConnectWise客户端IDAuthorization:正确构造的Basic认证头- 若为POST/PUT请求,需添加
Content-Type: application/json
二、Service Boards和IT Support Portal的必要性
- 非所有API必需:你调用的
company/companies接口属于公司管理模块,不需要依赖Service Boards或IT Support Portal。这两项配置仅在调用服务台相关API(如工单、服务板)时才需要。 - 必要配置清单:
- 确保你的API密钥(公钥/私钥)已被分配对应模块的权限(比如Company模块的读取权限)
- 确认
clientid、公司ID、公钥/私钥均正确无误 - 检查API端点版本与你的账号支持的版本匹配(示例中的v2022_2是合法版本,ConnectWise通常兼容旧版本请求)
额外建议
- 用纯文本工具(如Notepad++)生成Base64编码,避免格式干扰
- 测试时先调用最简单的GET接口(如你当前的公司列表接口),确认认证正常后再尝试复杂请求
- 联系账号管理员查看ConnectWise后台的API日志,获取更详细的错误原因
内容的提问来源于stack exchange,提问作者Prakash Gautam
相关产品推荐
相关产品推荐

