Rest上的Neo4j Cypher查询返回500个响应
我尝试向neo4j 2.1.3发送一个简单的密码查询,得到500个响应:Rest上的Neo4j Cypher查询返回500个响应,neo4j,cypher,Neo4j,Cypher,我尝试向neo4j 2.1.3发送一个简单的密码查询,得到500个响应: POST:http://localhost:7474/db/data/cypher data = { "query" : "MATCH (it) return it limit 10" } 尝试了包括以下标题的不同变体: {'content-type': 'application/json',"Accept": 'application/json'} 所有这些都产生了相同的500 http响应 顺便说一
POST:http://localhost:7474/db/data/cypher
data = {
"query" : "MATCH (it) return it limit 10"
}
尝试了包括以下标题的不同变体:
{'content-type': 'application/json',"Accept": 'application/json'}
所有这些都产生了相同的500 http响应
顺便说一句。。常规Rest API请求,例如:
http://localhost:7474/db/data/node
效果很好。不是100%,但AFAIK http头区分大小写,因此尝试使用内容类型
而不是内容类型
。如果您仍然得到500,请检查数据/log
和/或数据/graph.db/messages.log
是否有任何有用的条目。显然,问题在于数据的编码。
不确定到底是什么,但我在里面找到的
有一个编码功能。用了它,一切都正常了
def _json_encode( data, ensure_ascii=False):
def _any(data):
ret = None
if isinstance(data, (list, tuple)):
ret = _list(data)
elif isinstance(data, dict):
ret = _dict(data)
elif isinstance(data, decimal.Decimal):
ret = str(data)
elif isinstance(data, datetime.time):
ret = data.strftime(options.TIME_FORMAT)
else:
ret = data
return ret
def _list(data):
ret = []
for v in data:
ret.append(_any(v))
return ret
def _dict(data):
ret = {}
for k, v in data.items():
# Neo4j doesn't allow 'null' properties
if v is not None:
ret[k] = _any(v)
return ret
ret = _any(data)
return json.dumps(ret, ensure_ascii=ensure_ascii)
HTTP头不应区分大小写。其余的听起来不错:)@JohnMark13:你说得对。skme:尝试跟踪您通过网络发送的完整请求和响应(包括标题)。我已经跟踪了,并尝试了所有选项是否使用大写字母。当删除内容类型时,我得到415响应,因此我猜它确实接受头。正如我上面提到的,在日志扫描中找不到任何东西。您共享用于发送http请求的确切代码吗?您还可以检查data/log/neo4j.log文件中的错误消息吗?没有代码。。。我刚刚用“邮递员”试过一个POST请求。日志中也没有它的踪迹