【发布时间】:2014-05-01 22:20:26
【问题描述】:
我刚开始使用 neo4J,想尝试事务密码端点。我的 neo4J 服务器在 localhost:7474/ 上运行,并插入了电影数据。
如in the documentation 所述,我必须进行发布请求并包含一些参数。不幸的是,我不知道如何在 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();
}
当我执行代码时,我得到以下输出:
Sending 'POST' request to URL : http://localhost:7474/db/data/transaction
Post parameters : org.apache.http.client.entity.UrlEncodedFormEntity@76adb5f6
Response Code : 415
谁能帮助我了解如何将我的查询包含在 POST 请求中?
【问题讨论】:
-
在 Google 和 Neo4j 文档之间,有很多关于如何向 Neo4j 服务器发送 POST 请求的示例,例如通过泽西岛客户。除非我在这里误解了这个问题。
-
我看到了。但我想知道为什么我的标准 Apache http 客户端示例不起作用。
-
你误会了http请求的每一部分是什么,url-parameters != headers != body,JSON的payload属于body,其余都是http请求的headers。