2013-04-04 74 views
1

我試圖從Apache Flex前端使用neo4j的REST API。當我的Flex應用程序連接到基本URL(http://localhost:7474/db/data/)以發現其他服務URL時,它會以HTML格式(而不是JSON格式)回覆回覆(就像我在瀏覽器中輸入基本URL一樣)。neo4j REST API獲取HTML響應而不是JSON

在Flex HTTP請求,我給自己定了的Content-Type接受頭既爲「application/JSON」,但它沒有作出區別。我也試過GETPOST請求方法。

我已驗證neo4j能夠通過簡單的Telnet窗口發送JSON響應,因此它必須根據HTTP請求中的內容「智能」地格式化回覆。我想內容類型接受標題將照顧它,但。

我意識到這個問題在技術上並不在neo4j中,而是在Flex的HTTPService(和支持)類中的某個地方,但我在解決明顯的錯誤/限制方面沒有成功。

有沒有辦法簡單地強制所有這樣的響應從neo4j只是在JSON格式?

感謝,

克里斯

*編輯*

如下要求,這裏是確切的答覆我得到我的Flex應用程序:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html><head><title>Root</title><meta content="text/html; charset=utf-8" http-equiv="Content-Type"> 
<link href='http://resthtml.neo4j.org/style/rest.css' rel='stylesheet' type='text/css'> 
<script type='text/javascript' src='/webadmin/htmlbrowse.js'></script> 
</head> 
<body onload='javascript:neo4jHtmlBrowse.start();' id='root'> 
<div id='content'><div id='header'><h1><a title='Neo4j REST interface' href='/'><span>Neo4j REST interface</span></a></h1></div> 
<div id='page-body'> 
<table class="root"><caption>Root</caption> 
<tr class='odd'><th>relationship_index</th><td><a href="http://localhost:7474/db/data/index/relationship">http://localhost:7474/db/data/index/relationship</a></td></tr> 
<tr><th>node_index</th><td><a href="http://localhost:7474/db/data/index/node">http://localhost:7474/db/data/index/node</a></td></tr> 
</table> 
<div class='break'>&nbsp;</div></div></div></body></html> 

這如果我只是手動將基礎URL放入我的Web瀏覽器並以這種方式檢索,我會得到同樣的結果。

+0

所以也許用「flex」,「http」,「json」來標記這篇文章呢?它適用於javascript和node.js,並且afaik只能查看http-headers,你確定它們到達服務器嗎?也許使用ngrep或tcpdump來檢查? – 2013-04-09 06:51:33

回答

0

我想通了。當我編譯並運行我的Flex應用程序作爲基於瀏覽器的應用程序時,它使用瀏覽器的本機功能來請求URL,吹掉我定製的Content-Type和Accept標頭。

當我編譯和運行爲Adobe AIR桌面應用程序,它工作得很好,我收到了正確的JSON響應。

可能的,這是在Flash Player中的錯誤,作爲Flex HTTPService組件類的文檔並不會給瀏覽器與空調運行時改變Content-Type或其他頭的任何限制。

-Chris

+0

謝謝,我也有這個問題,使用Jersey API。添加resource.accept(MediaType.APPLICATION_JSON)的竅門。 – 2013-06-20 04:00:32