来自VB.NET的Neo4j 2.3.0-M01密码查询失败

时间:2015-04-24 14:50:45

标签: vb.net neo4j

最近在Windows 7 Prof PC上安装了新版本的Neo4j。能够使用API​​批量插入创建节点。来自Web界面工作的Cypher查询但现在在注释“检索结果”后的行中的VB.NET代码失败,这将在JSon中。这在之前的Neo4j版本(2.2.x)上运行良好

 Public Shared Function DBQuery(URI As String, PostString As String) As DataView
    'runs query and returns JSon results as a dataview
    'Uses POST method to access Neo4j Server API
    Dim S As String = ""
    Dim HttpWReq As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(URI)
    HttpWReq.Method = "POST"
    HttpWReq.ContentType = "application/json"
    HttpWReq.Accept = "application/json"
    Dim B1() As Byte = System.Text.Encoding.Unicode.GetBytes(PostString, 0, Len(PostString))

    'POST query
    'http://blog.micic.ch/net/using-neo4j-graph-db-with-c-net
    HttpWReq.Connection = "Open"
    HttpWReq.ContentLength = B1.Length
    Dim newStream As IO.Stream = HttpWReq.GetRequestStream()
    'this method closes stream before calling getResponse
    Using newStream
        newStream.Write(B1, 0, B1.Length)
    End Using

    'retrieve results of query, which will be in JSon 
    Dim HttpWResp As System.Net.HttpWebResponse = CType(HttpWReq.GetResponse(), System.Net.HttpWebResponse)
    HttpWReq.KeepAlive = False
    HttpWReq.Timeout = 15000000

    Dim E As System.Text.Encoding = System.Text.Encoding.GetEncoding(HttpWResp.CharacterSet)
    Dim SR As IO.StreamReader = New IO.StreamReader(HttpWResp.GetResponseStream, encoding:=E)
    S = SR.ReadToEnd  'JSon result
    Return JSonToDV(S)
End Function

v2.3.0的文档表明需要不同的conf文件设置,但这不起作用。文档位于http://neo4j.com/docs/2.3.0-M01/server-configuration.html。 neo4j-server.properties文件最初没有org.neo4j.server.database.location = data / graph.db的条目。添加建议的行(org.neo4j.server.database.location =" C:/Data/Neo4j/UMLS/graph.db")然后数据库无法启动。非常感谢建议的解决方案。

1 个答案:

答案 0 :(得分:0)

问题不在于Neo4j 2.3.0,而在于VB.NET代码。修正后的代码有效:

  Public Shared Function DBQuery(URI As String, PostString As String, method As EnumLib.WebServiceMethod) As DataView
    'Used for individual API calls; see BulkUpload for other method
    'Uses POST method to access Neo4j Server API
    Dim ID As Long = 0
    Dim HttpWReq As System.Net.HttpWebRequest = System.Net.HttpWebRequest.Create(URI)

    Select Case method
        Case EnumLib.WebServiceMethod.POST
            HttpWReq.Method = "POST"
        Case EnumLib.WebServiceMethod.GET
            HttpWReq.Method = "GET"
    End Select
    HttpWReq.ContentType = "application/json"
    HttpWReq.Accept = "application/json"

    Dim B1() As Byte = System.Text.Encoding.UTF8.GetBytes(PostString, 0, Len(PostString))

    'http://blog.micic.ch/net/using-neo4j-graph-db-with-c-net
    HttpWReq.Connection = "Open"
    Dim S As String = ""
    Try
        HttpWReq.ContentLength = B1.Length
        Dim newStream As IO.Stream = HttpWReq.GetRequestStream()
        'this method closes stream before calling getResponse
        Using newStream
            newStream.Write(B1, 0, B1.Length)
        End Using

        Dim HttpWResp As System.Net.HttpWebResponse = CType(HttpWReq.GetResponse(), System.Net.HttpWebResponse)

        Dim E As System.Text.Encoding = System.Text.Encoding.GetEncoding(HttpWResp.CharacterSet)
        Dim SR As IO.StreamReader = New IO.StreamReader(HttpWResp.GetResponseStream, encoding:=E)
        S = SR.ReadToEnd

    Catch ex As System.Net.WebException
        MsgBox("Message: " & vbLf & ex.Message)
        Dim RS As IO.StreamReader = New IO.StreamReader(ex.Response.GetResponseStream)
        Dim SS As String = RS.ReadToEnd
        PostReturnString = "WebException Error: " & ex.Message & vbLf & vbLf & ex.Status & vbLf & vbLf & SS
        ' MsgBox("Status: " & vbLf & ex.Status & vbLf & vbLf & SS)
    End Try
    Return JSonToDV(S)
    End Function