2013-01-15 62 views
3

情況:我試圖從ColdFusion CFC調用LinkedIn API來獲取用戶的配置文件和網絡(連接)。 LinkedIn API指出,要做到這一點,你必須調用一個URL爲scope = r_fullprofile + r_network。cfhttp如何不編碼加號

問題:ColdFusion會自動編碼URL,所以加號正在被編碼,LinkedIn會拒絕我的呼叫。有沒有辦法解決?我已經在github上發佈了一段代碼片斷的鏈接,我相信這些代碼片段說明了這個問題。

https://gist.github.com/4535364

任何幫助,將不勝感激!

回答

1

範圍字段是空格分隔列表。

+字符通常用作空間的快捷方式,因爲它比%20(這是空間編碼的可讀性)更具可讀性。

如果使用編碼的加號(%2B)加字符結果被髮送,那麼你就只剩下把空間劃分爲URL的另外兩種方式:

  1. 使用文字空格字符,或
  2. 使用編碼空間%20

嘗試兩者的這些選項,最好使用網絡嗅探器(如WireShark),這樣就可以準確地看到正在發送的內容。

更新:根據下面的評論,%20是正確的,但基於簽名的字符串需要重新編碼,所以該%變得%25,給人%2520結果。

+0

嗨,彼得,感謝您的回覆,但字面空間也不起作用。 – wellercs

+0

嗯,我基於我看到的一些例子(因爲試圖訪問LinkedIn API本身給404或重定向到主頁)。有沒有一個特定的LinkedIn頁面記錄? –

+1

@PeterBoughton我在搜索時發現了這篇文章,討論了所需的編碼。 [請求令牌查詢中的權限範圍不起作用](http://developer.linkedin.com/forum/permission-scope-request-token-query-not-working)請參閱Jack Newcombe編號爲6的回覆。通過他們的方式,我也有問題進入該linkedin頁面。這是sloooowwww。 –

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

旁註你r github代碼示例正在調用'receiver.cfm'的cfhttp,但您調用了文件'cfhttp_receiver.cfm'。在這一行:

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

使用測試包裝是一種明智的方法,但由於API只是OAuth + REST,因此CF不應該使用它嗎? :/ –

+0

@PeterBoughton我完全同意你的彼得。假設所請求的URL將與「+」符號一起工作,那麼它只是ColdFusion不編碼該字符的問題。但如何做到這一點是一個謎... ...? –

+0

@ Miguel-F是的,我上傳了一個不同名稱的代碼,並忘記更改代碼示例中的鏈接。它只是一個簡單的例子。我正在使用[LinkedIn CFC](http://linkedin.riaforge.org/),我發現我做了一些修改以獲得其他一些工作。我真的想避免linkedin-j,但感謝您的建議和鏈接。 – wellercs