我已成功使用POST和Content-Type application/xml创建对象
我也成功使用Content-Type application/x-www-form-urlencoded查询了一个空白请求体,它根据我指定的URI返回所有对象类型.
我也可以在请求体中使用像PageNum = 1和ResultsPerPage = 1这样的东西,并且我已经想出如何将其合并到签名中以便得到有效的响应.
然而,无论我如何格式化,当我尝试使用过滤器时,我都无法获得除401响应之外的任何内容(像Filter = FAMILYNAME:EQUALS:Doe这样的基本内容).我已经阅读了关于如何使用[RFC3986]百分比编码转义所有参数名称和值的OAuth Core 1.0 Revision A规范.但是我觉得我错过了一个步骤或格式错误.我在Intuit的论坛中看到了关于正确格式究竟是什么的不一致信息.
任何有关这方面的帮助将不胜感激.我现在一直在努力工作一周.
尝试使用过滤器时得到的响应是:HTTP状态401 - 消息=异常验证OAuth; 错误码= 003200; 的StatusCode = 401
---- ----更新
当我尝试使用新的IPP开发人员工具 - IPP API Explorer时,我看到同样的错误.我正在使用IDS V2 QBO API Explorer.我能够使用该工具检索所有Post并且响应显示我的所有客户,但是当我尝试使用过滤器时,我得到:服务器错误401 - 未经授权:由于凭据无效而拒绝访问.您无权使用您提供的凭据查看此目录或页面.
有任何想法吗?如果我从API Explorer工具中得到相同的错误,它会让我觉得问题完全不同.
----最后更新----
我终于有了过滤器的成功,我相信我已经弄明白我的问题是什么.我总是怀疑我能得到的查询中包含"页次= 1&ResultsPerPage = 1"工作分页,但无法得到的东西,如"过滤器= FAMILYNAME:等于:李四".我怀疑问题在于过滤格式中的空白区域.是什么让我无法跟踪此问题,因为我无法让过滤器在IDS V2 QBO API Explorer中运行.这让我怀疑还有其他事情发生了.我决定一起忽略API Explorer,并专注于为什么我可以让它以单向工作而不是另一种方式工作.
我相信我的问题归结为签名中过滤器值的不正确编码.这解释了我得到的401无效签名错误.
归一化后,"过滤器=名称:EQUALS:Doe"变为"过滤器=名称%20%3AEQUALS%20%3ADoe".
百分比编码应该给出"Filter%3DName%2520%253AEQUALS%2520%253ADoe".
实质上,你必须"双"编码空格和冒号,但不是等号.我尝试了许多编码的排列,但我相信我的错误是我不是"双重"编码,或者当我进行双重编码时,我包含了'='符号.无论哪种方式打破你的签名.感谢大家的投入.