1

Apache Flex フロントエンドから neo4j の REST API を使用しようとしています。Flex アプリがベース URL ( http://localhost:7474/db/data/) に接続して他のサービス URL を検出すると、JSON 形式ではなく HTML で応答が返されます (ブラウザーにベース URL を入力した場合と同様)。

Flex HTTP リクエストで、Content-TypeヘッダーとAcceptヘッダーの両方を「application/json」に設定しましたが、違いはありません。また、 GETPOSTの両方のリクエスト メソッドを試しました。

neo4j が単純な telnet ウィンドウを介して JSON 応答を送信できることを確認したので、HTTP 要求内の何かに基づいて応答を「インテリジェントに」フォーマットする必要があります。ただし、 Content-TypeヘッダーとAcceptヘッダーがそれを処理してくれると思っていました。

この問題は技術的には 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>

これは、Web ブラウザーに手動でベース URL を入力して取得した場合と同じ結果になります。

4

1 に答える 1

0

私はそれを考え出した。Flex アプリをブラウザーベースのアプリとしてコンパイルして実行すると、ブラウザーのネイティブ機能を使用して URL を要求し、カスタマイズした Content-Type ヘッダーと Accept ヘッダーを吹き飛ばしました。

Adobe Air デスクトップ アプリとしてコンパイルして実行すると、問題なく動作し、適切な JSON 応答を受け取りました。

これは Flash Player のバグである可能性があります。Flex HTTPService クラスのドキュメントでは、ブラウザーと Air で実行する場合の Content-Type やその他のヘッダーの変更に関する制限が与えられていないためです。

-クリス

于 2013-04-10T20:43:00.680 に答える