2013-05-07 64 views
0

我實際上使用Neo4j中的社區插件,並嘗試通過java發出POST請求來查詢neo4j服務器。Neo4j其餘調用使用Java(不在嵌入式模式)

我總是得到一個java.io.IOException:服務器返回的HTTP響應代碼:400 雖然類似的調用通過JavaScript工作,但業務邏輯建議通過Java調用。

這裏是我的代碼片段:

String baseURL="ip_of_server"; 
    StringBuilder builder = new StringBuilder(); 
    try { 
     URL url = new URL(baseURL); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoOutput(true); 
     connection.setDoInput(true); 
     connection.setRequestMethod("POST"); 
     connection.setRequestProperty("Content-Type", "application/json"); 
     OutputStream os=connection.getOutputStream(); 
     OutputStreamWriter writer = new OutputStreamWriter(os,Charset.forName("UTF-8")); 


     System.out.println(url); 
     Map<String, Object> params = new HashMap<String, Object>(); 
     params.put("query", "start x = node(3) return x"); 
     HashMap<String,String> test3= new HashMap<String,String>(); 
     params.put("params", test3); 
     ObjectMapper temp = new ObjectMapper(); 

     String testString= temp.writeValueAsString(params); 
     writer.write(testString); 
     writer.close(); 
     os.close(); 


     String line = null; 
     BufferedReader reader = new BufferedReader(new InputStreamReader(
       connection.getInputStream())); 
     while ((line = reader.readLine()) != null) { 
      builder.append(line); 

     } 
     System.out.println("Response from server for request : " + url.toString() + " is "); 
     System.out.println(builder.toString()); 



    } catch (Exception e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 

有什麼建議?

+0

我的這個問題可以提供一些提示 - http://stackoverflow.com/questions/15260994/error-401-unauthorized-for-neo4j-rest-url-on-heroku – Gopi 2013-05-07 17:19:44

+0

我現在還沒有在neo4j db中設置密碼。在我看來,查詢是在POST中發送的問題。難道是因爲多個「=」? – neoeahit 2013-05-07 17:35:44

+0

我可以做這樣的查詢,但現在我不能在查詢 :** curl -v -H「Content-Type:application/json」-d「{\」查詢中包含node_auto_index(name =「xxx」) \「:\」start x = node(3)return x.name \「}」「url」** – neoeahit 2013-05-09 15:42:23

回答

0

什麼它需要是一個分析器,因爲「=」等由編碼轉換成其他字符,因此Neo4j的引發錯誤