cfhttp如何不编码加号

时间:2013-01-15 02:12:34

标签: coldfusion linkedin cfhttp

情况:我试图从ColdFusion CFC调用LinkedIn API来获取用户的个人资料和网络(连接)。 LinkedIn API声明要执行此操作,您必须使用scope = r_fullprofile + r_network调用URL。

问题:ColdFusion会自动对URL进行编码,因此加号会被编码,而LinkedIn则拒绝我的电话。有没有办法解决?我在github上的一些代码片段下面发布了一个链接,我相信这说明了这个问题。

https://gist.github.com/4535364

任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:2)

我已经对此进行了一些搜索,我看到很多例子,其中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">

答案 1 :(得分:1)

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

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

如果使用加号字符会导致发送编码加号(%2B),那么您可以通过另外两种方式将空格放入URL:

  1. 使用文字空格字符或
  2. 使用编码空格%20
  3. 尝试这两个选项,最好使用网络snifer(例如WireShark),这样您就可以准确地看到发送的内容。

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