Java 如何在http post请求中插入cypher语句
我刚开始使用neo4J,想尝试事务性密码端点。我的neo4J服务器运行在localhost:7474/上,并插入了电影数据 如上所述,我必须做一个post请求并包含一些参数。不幸的是,我不知道如何在POST请求中包含我的查询。据我所知,我必须传递一个JSON字符串Java 如何在http post请求中插入cypher语句,java,neo4j,cypher,Java,Neo4j,Cypher,我刚开始使用neo4J,想尝试事务性密码端点。我的neo4J服务器运行在localhost:7474/上,并插入了电影数据 如上所述,我必须做一个post请求并包含一些参数。不幸的是,我不知道如何在POST请求中包含我的查询。据我所知,我必须传递一个JSON字符串 private static String sendPost() throws Exception { String url = "http://localhost:7474/db/data/transaction"
private static String sendPost() throws Exception {
String url = "http://localhost:7474/db/data/transaction";
String statement ="[ { \"statement\" : \"MATCH (n:Person) RETURN n.name, n.born\"} ]";
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(url);
List<NameValuePair> urlParameters = new ArrayList<NameValuePair>();
urlParameters.add(new BasicNameValuePair("Accept", "application/json; charset=UTF-8"));
urlParameters.add(new BasicNameValuePair("Content-Type", "application/json"));
urlParameters.add(new BasicNameValuePair("statements", statement));
post.setEntity(new UrlEncodedFormEntity(urlParameters));
HttpResponse response = client.execute(post);
StringBuilder builder = new StringBuilder();
builder.append("\nSending 'POST' request to URL : " + url+"<br>");
builder.append("Post parameters : " + post.getEntity()+"<br>");
builder.append("Response Code : " + response.getStatusLine().getStatusCode()+"<br>");
BufferedReader rd = new BufferedReader(
new InputStreamReader(response.getEntity().getContent()));
StringBuffer result = new StringBuffer();
result.append("<p>");
String line = "";
while ((line = rd.readLine()) != null) {
result.append(line+"\n");
}
result.append("</p>");
return builder.toString();
}
有谁能帮助我如何在POST请求中包含我的查询吗?
看看这一点,您可以看到POST请求的主体并不是服务器所期望的,也就是说,您应该发送一个完整的JSON文档,而不是一个k/v对w/“statements”作为键,JSON密码查询作为值。请记住,您在这里发送的是JSON,而不是URL编码的正文
此外,看起来您正在将“Accept”和“Content-Type”k/v对设置为文章正文的一部分,而实际上它们应该是标题的一部分
也可以考虑使用CyfER端点:
HTH在谷歌和Neo4j文档之间,有很多示例说明如何向Neo4j服务器发送POST请求,例如通过Jersey客户端。除非我误解了这个问题,我看到了。但是我想知道为什么我的标准Apache http客户端示例不起作用。您误解了http请求的每个部分都是用于url参数的!=标题!=主体,JSON负载属于主体,其余为http请求头。
Sending 'POST' request to URL : http://localhost:7474/db/data/transaction
Post parameters : org.apache.http.client.entity.UrlEncodedFormEntity@76adb5f6
Response Code : 415