2016-09-07 86 views
0

我正在從客戶的供應商處獲取數據饋送。
Documention說我可以使用XML和JSON獲取提要,但默認是XML。要獲得JSON,我必須設置標題接受:application/json並刪除接受:application/xml標題。
我沒有設置也沒有刪除我的代碼中的任何標題。
我使用普通的URLLoader來加載Feed。FlashDevelop接收XML,Flash Pro收到JSON

當我導航到瀏覽器中的feed url時,我得到XML
當我在FlashDevelop中運行我的代碼時,我得到了XML
當我在Flash Pro中運行完全相同的代碼時,我得到了JSON

有沒有人有任何想法是什麼導致這在Flash Pro中?任何可以更改的隱藏設置?
URLRequest.method沒有影響。調試模式或沒有影響。
我跺腳了。

---------代碼我試圖------------

var header:URLRequestHeader = new URLRequestHeader("Accept", "application/xml"); 
var headers:Array = []; 
headers.push(header); 
urlReq.requestHeaders = headers; 
urlReq.method = URLRequestMethod.POST; 

---------滿載代碼--- --------

_urlLoader.addEventListener(Event.COMPLETE, validateFeedLoaded); 
_urlLoader.addEventListener(IOErrorEvent.IO_ERROR, handleFeedIOerror); 
_urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleFeedSecError); 
var urlReq:URLRequest = new URLRequest(_feedUrl); 
urlReq.requestHeaders = [new URLRequestHeader("Accept", "application/json")]; 
_urlLoader.load(urlReq); 
+0

做過任何基本的調試,比如嗅探各種客戶端發送的請求的標題? –

+0

在這個階段,客戶不參與,我仍然在構建這個數據源。但是,如果我檢查我的代碼中的urlrequest.requestHeaders,我什麼也得不到。 – Poppe76

+1

當然他們參與,你問爲什麼3個不同的客戶得到不同的結果。正如@Marc B建議的那樣,監視HTTP通信以查看所做的請求是否不同。 – null

回答

1

不同的客戶端/應用程序有不同的默認值。不同版本的Flash/Air運行時可能對接受類型具有不同的默認值。

如果你需要的一致性,那麼你應該明確地設置在您的要求接受類型:

urlrequest.requestHeaders = [new URLRequestHeader("Accept", "application/json")]; 

這應當確保在您使用的運行時的任何版本獲得JSON早在兩個IDE的。

+0

它在FlashDevelop工作,謝謝。它只是不能在Flash Pro中工作。在FlashDevelop我可以設置標頭爲JSON或XML,並且它的工作完美,但在Flash Pro我用代碼設置的頭文件根本沒有任何影響。 – Poppe76