2013-04-04 6 views
1

Apache Flex 프런트 엔드에서 neo4j의 REST API를 사용하려고합니다. 내 Flex 앱이 기본 URL (http://localhost:7474/db/data/)에 연결하여 다른 서비스 URL을 찾으면 브라우저에 기본 URL을 입력하는 것처럼 JSON 형식이 아닌 HTML 형식으로 응답을받습니다. 플렉스 HTTP 요청에서 neo4j JSON 대신 HTML 응답을받는 REST API

, 나는 및 는 "응용 프로그램/JSON"에 헤더를 모두 수락 콘텐츠 형식을 설정했지만 그것은 차이를 만들어 않았습니다. 나는 또한 GETPOST 요청 방법을 모두 시도했습니다.

neo4j가 간단한 텔넷 창을 통해 JSON 응답을 보낼 수 있다는 것을 확인 했으므로 HTTP 요청의 내용을 기반으로 응답을 "지능적으로"형식화해야합니다. 나는 Content-TypeAccept 헤더를 받아 들일 것이라고 생각했다.

이 문제는 기술적으로 neo4j가 아니라 Flex의 HTTPService (및 지원) 클래스 내부에서 발생하지만 명백한 버그/제한 사항을 해결하는 데는 실패했습니다.

neo4j의 모든 응답을 JSON 형식으로 강제로 적용 할 수있는 방법이 있습니까?

감사합니다,

크리스

* EDIT *

아래의 요청으로, 여기에 내가 내 플렉스 응용 프로그램에서지고있어 정확한 회신 :

<!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을 수동으로 입력하고 검색하는 것과 같은 결과입니다.

+0

아마도이 게시물을 "flex", "http", "json"태그로 태그 할 수 있습니까? javascript와 node.js에서 잘 작동하며 http-headers에서만 볼 수 있습니다. 서버에 도착했는지 확인하십시오. 아마도 ngrep 또는 tcpdump를 사용하여 확인 하시겠습니까? –

답변

0

나는 그것을 알아 냈다. Flex 기반 앱을 컴파일하여 브라우저 기반 앱으로 실행했을 때, 브라우저의 고유 기능을 사용하여 URL을 요청하고 사용자 지정된 Content-Type 및 Accept 헤더를 불어 나게했습니다.

Adobe Air 데스크톱 응용 프로그램으로 컴파일하고 실행하면 정상적으로 작동하고 적절한 JSON 응답을 받았습니다.

Flex HTTPService 클래스의 설명서는 브라우저 대 Air에서 실행할 때 Content-Type 또는 다른 헤더를 변경하는 데 제한을주지 않으므로 Flash Player의 버그 일 수 있습니다.

-Chris

+0

Jersey API를 사용하여이 문제도 발생했습니다. resource.accept (MediaType.APPLICATION_JSON)를 추가하면 트릭을 만들었습니다. –