【问题标题】:cfhttp how to not encode plus signcfhttp如何不编码加号
【发布时间】:2013-01-15 02:12:33
【问题描述】:

情况:我正在尝试从 ColdFusion CFC 调用 LinkedIn API 以获取用户的个人资料和网络(连接)。 LinkedIn API 规定,要执行此操作,您必须调用范围=r_fullprofile+r_network 的 URL。

问题:ColdFusion 自动对 URL 进行编码,因此加号被编码,LinkedIn 拒绝了我的呼叫。有没有办法解决?我在下面发布了一个链接,指向 github 上的一些代码 sn-ps,我相信这说明了这个问题。

https://gist.github.com/4535364

任何帮助将不胜感激!

【问题讨论】:

    标签: coldfusion linkedin cfhttp


    【解决方案1】:

    我已经对此进行了一些搜索,并且看到很多 ColdFusion 不能很好地与 LinkedIn API 配合使用的示例。所以我担心如果你确实通过了这个问题(虽然我还没有想出替代方案),另一个会突然出现。在搜索时,我发现人们提出了一些使用linkedin-j, A Java wrapper for LinkedIn APIs 的建议。以下是我找到的一些参考资料:

    Working example Coldfusion and Linkedin API

    LinkedIn-J does not return educations

    401 Unauthorized response. API people/~ and people/id=; ColdFusion, cfhttp

    Problem updating status - 401 unauthorized - ColdFusion

    linkedin-j Getting Started

    旁注您的 github 代码示例正在对“receiver.cfm”进行cfhttp 调用,但您将文件称为“cfhttp_receiver.cfm”。在这一行:

    <cfhttp url="http://#cgi.http_host#/sandbox/receiver.cfm?scope=#url.scope#" method="post" resolveurl="no">
    

    【讨论】:

    • 使用经过测试的包装器是一种明智的方法,但由于 API 只是 OAuth+REST,CF 没有理由不使用它吗? ://
    • @PeterBoughton 我完全同意你的观点,彼得。假设所请求的 URL 将与 '+' 符号完好无损,那么这只是 ColdFusion 不对该字符进行编码的问题。但是如何做到这一点是一个谜......?
    • @Miguel-F 是的,我用不同的名称上传了代码,但忘记更改代码示例中的链接。这是一个简单的例子。我正在使用LinkedIn CFC,我发现我已经对其进行了一些修改以使其他一些事情正常工作。我真的很想避免使用linkedin-j,但感谢您的建议和链接。
    【解决方案2】:

    范围字段是一个空格分隔的列表。

    + 字符通常用作空格的快捷方式,因为它比%20(空格编码为)更具可读性。

    如果使用加号导致发送编码的加号 (%2B),那么您还有另外两种将空格放入 URL 的方法:

    1. 使用文字空格字符,或
    2. 使用编码空间%20

    尝试这两个选项,最好使用网络嗅探器(例如WireShark),这样您就可以准确地看到正在发送的内容。

    更新:根据下面的 cmets,%20 是正确的,但基于签名的字符串需要再次编码,因此% 变为%25,结果为%2520

    【讨论】:

    • 嗨,彼得,感谢您的回复,但文字空间也不起作用。
    • 嗯,我是基于我看到的一些示例(因为尝试访问 LinkedIn API 本身会给出 404 或重定向到主页)。是否有特定的 LinkedIn 页面记录了这一点?
    • @PeterBoughton 我在搜索时发现这篇文章讨论了所需的编码。 Permission scope in request token query not working 请参阅 Jack Newcombe 的第 6 条回复。顺便说一句,我在访问该链接页面时也遇到了问题。太慢了www。
    • 如果我将 URL 更改为 HTTPS 它可以工作,否则子域将恢复为www. :/ 无论如何,这似乎证实了+%20 应该可以工作。 wellercs - 你试过 %20 了吗?
    • @PeterBoughton 这个问题分为两部分。 post 参数需要按照您的建议将 + 编码为 %20 但基于签名的字符串需要将其编码为 %2520 所以我很抱歉,因为您是正确的,但我不知道签名字符串需要是 %2520 (我也使用 %20 作为签名字符串)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-25
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多