Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在http post请求中插入cypher语句_Java_Neo4j_Cypher - Fatal编程技术网

Java 如何在http post请求中插入cypher语句

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"

我刚开始使用neo4J,想尝试事务性密码端点。我的neo4J服务器运行在localhost:7474/上,并插入了电影数据

如上所述,我必须做一个post请求并包含一些参数。不幸的是,我不知道如何在POST请求中包含我的查询。据我所知,我必须传递一个JSON字符串

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