我正在尝试从Apache Flex前端使用neo4j的REST API。当我的Flex应用程序连接到基本URL(http://localhost:7474/db/data/
)以发现其他服务URL时,它会以HTML而不是JSON格式回复(就像我在浏览器中输入基本URL一样)。
在Flex HTTP请求中,我已将 Content-Type 和 Accept 标头设置为“application / json”,但它没有任何区别。我也尝试了 GET 和 POST 请求方法。
我已经验证neo4j能够通过一个简单的telnet窗口发送JSON响应,因此必须根据HTTP请求中的内容“智能地”格式化回复。我认为 Content-Type 和 Accept 标题会照顾它。
我意识到这个问题在技术上并不是在neo4j中,而是在Flex的HTTPService(和支持)类中的某个地方,但我在解决明显的bug /限制方面一直没有成功。
有没有办法简单地强制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'> </div></div></div></body></html>
如果我只是手动将基本URL放在我的网页浏览器中并以这种方式检索它,这就是我得到的结果。
答案 0 :(得分:0)
我明白了。当我编译并运行我的Flex应用程序作为基于浏览器的应用程序时,它使用浏览器的本机功能来请求URL,吹走我的自定义Content-Type和Accept标头。
当我编译并作为Adobe Air桌面应用程序运行时,它工作正常,我收到了正确的JSON响应。
可能这是Flash Player中的一个错误,因为Flex HTTPService类的文档在浏览器与Air中运行时对更改Content-Type或其他标题没有任何限制。
-Chris