2014-02-17 26 views
4

我試圖做給Facebook,但ColdFusion的一個調用的結果一些衛生告訴我,該變量爲空:Cfhttp結果結構的行爲就像CF8中的null一樣?

FILECONTENT null <br>The error occurred on line 66. 

下面是導致該錯誤的行:

<cfif isDefined("storeFeedJSON.fileContent")> 
    <cfset storeFeedJSON.fileContent = process.CleanBadUnicode("#storeFeedJSON.fileContent#")> 
</cfif> 

的結構顯然是不爲空但因爲我有它包裹在一個「isDefined」當我傾倒storeFeedJSON我可以看到fileContent看起來像

{"data":[]} 

空JSON但仍然沒有空......

編輯:這是我忘了擺在那裏召喚:

<cfset fbURL = "https://graph.facebook.com/#qStoreFBPages.pageID#/#fbEdge#?fields=#fbFields#&since=#fbSinceTime#&#qToken.objectValue#"> 
    <cfhttp result="storeFeedJSON" url="#fbURL#" method="get"></cfhttp> 

這將可能最終看起來像這樣:

<cfhttp result="storeFeedJSON" url="https://graph.facebook.com/1749383765/posts?fields=created_time&since=1389296713&access_token=CAAH6oehQqUUU2IALvt0ZB3mdE6E2LCaldFc1TjIqxALUZBMqZC01O2hQXkOX8ROI9QBHn7WjWrHHneazAP4gWbj0MBsRUlel9TAG52kjBm0bBOUHVEFmEusEUHfhznlqzH1GMgCpCU4z4SmgXU8oFZBPDyAv1ByJu167jgkVd6UROWtDZBNBCP&expires=5184000" method="get"></cfhttp> 

請注意,由於我更改了令牌和其他一些參數,因此不會產生Facebook的有效回覆。

+0

你可以包括''電話。你在什麼版本的ColdFusion?我想知道 - 因爲你正在接收JSON - 你是否看到類似於我在這裏看到的東西:http://cfmlblog.adamcameron.me/2013/01/weird-behaviour-with-cfhttp-and -json.html。不同的表現,但''變得困惑和行爲愚蠢。 –

+0

添加流行信息,thx @AdamCameron奇怪的是,該鏈接無法正常工作,但我能夠在您的博客上找到該帖子:根據我的理解,可以通過爲getAsBinary設置適當的值來解決此問題。然而,當結果被轉儲時,我的fileContent只是一個字符串,就像mimeType或header在你的例子中返回的那樣。 –

回答

3

我不認爲你可以重新分配storeFeedJSON結構的屬性。 storeFeedJSON是你的cfhttp的結果,對吧?在

<cfhttp url="xyz" result="storeFeedJSON"> 

......我認爲這是一個受保護或不可變的數據結構。你顯然可以將它作爲你的函數的參數傳遞,但將輸出放在其他變量中,或者直接放入json反序列化中。

<cfset local.cleanFileContent = process.CleanBadUnicode(storeFeedJSON.fileContent)> 
<cfdump var="#deserializeJSON(local.cleanFileContent)#"> 

...,雖然我在這,你可能想使用getasbinary="never"因爲Facebook可能在某一天給你的二進制數據,或更改其標題或東西,然後你的代碼將打破。如果你必須得到二進制文件,你需要cfhttp.fileContent.toString()或類似的東西。