1

我正在尝试从 Apache Flex 前端使用 neo4j 的 REST API。当我的 Flex 应用程序连接到基本 URL ( http://localhost:7474/db/data/) 以发现其他服务 URL 时,它会以 HTML 而不是 JSON 格式返回回复(就像我在浏览器中输入基本 URL 一样)。

在 Flex HTTP 请求中,我将Content-TypeAccept标头都设置为“application/json”,但并没有什么不同。我也尝试过GETPOST请求方法。

我已经验证 neo4j 能够通过一个简单的 telnet 窗口发送 JSON 响应,因此它必须根据 HTTP 请求中的某些内容“智能地”格式化响应。不过,我认为Content-TypeAccept标头会处理它。

我意识到这个问题在技术上不在于 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 浏览器并以这种方式检索它,这与我得到的结果相同。

4

1 回答 1

0

我想到了。当我将 Flex 应用程序编译为基于浏览器的应用程序并将其运行时,它使用浏览器的本机功能来请求 URL,从而消除了我自定义的 Content-Type 和 Accept 标头。

当我编译并作为 Adob​​e Air 桌面应用程序运行时,它运行良好,并且我收到了正确的 JSON 响应。

这可能是 Flash Player 中的一个错误,因为 Flex HTTPService 类的文档对在浏览器和 Air 中运行时更改 Content-Type 或其他标头没有任何限制。

-克里斯

于 2013-04-10T20:43:00.680 回答