首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建类似于httpbuilder的异步httpbuilder

构建类似于httpbuilder的异步httpbuilder
EN

Stack Overflow用户
提问于 2013-12-24 12:52:09
回答 1查看 1.3K关注 0票数 0

发布这篇文章可能是个错误的地方,但我一直在与异步http构建器打交道,试图让基本的密码查询正常工作。它与一起工作,但无法使它与异步版本一起工作。

代码语言:javascript
复制
   @Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.6' )
    @Grab(group='net.sf.json-lib', module='json-lib', version='2.4', classifier='jdk15' )

    import groovyx.net.http.*
    import static groovyx.net.http.ContentType.*
    import static groovyx.net.http.Method.*

    def query(statement, params,success, error) {
    def http = new HTTPBuilder( 'http://localhost:7474' )
    http.request( POST, JSON ) {
    uri.path = '/db/data/cypher/'
    headers.'X-Stream' = 'true'
    requestContentType = JSON
    body =  [ query : statement , params : params ?: [:] ]

     // uri.query = [ param : 'value' ]

     response.success = { resp, json ->
       if (success) success(json)
       else {
        println "Status ${resp.statusLine} Columns ${json.columns}\nData: ${json.data}"
       }
     }

     response.failure = { resp, message ->
           def result=[status:resp.statusLine.statusCode,statusText:resp.statusLine.reasonPhrase]
           result.headers = resp.headers.collect { h -> [ (h.name) : h.value ] }
           result.message = message
       if (error) {
                 error(result)
       } else {
        println "Status: ${result.status} : ${result.statusText} "
        println 'Headers: ${result.headers}'
        println 'Message: ${result.message}'
       }
     }
    }
   }

代码语言:javascript
复制
query("MATCH n RETURN n;",[],{ println "Success: ${it}" },{ println "Error: ${it}" })

不过,我已经在AsyncHttpBuilder上尝试过了。不能让它起作用。现在我正在尝试一件简单的事情,却无法得到任何有用的结果。

代码语言:javascript
复制
@Test
public void testQueue()
{
    def http = new AsyncHTTPBuilder( poolSize : 1 ,
            uri : 'http://localhost:7474/db/data/cypher' )
    def responses = []
    responses << http.post(query : [q:  "MATCH n RETURN n;"]) {return it}


    if (!responses.every{it.done})
    {
        println 'waiting...'
        Thread.sleep(2000)
    }
    responses.each {
        println(it)
    }
    http.shutdown()
} 

有什么想法吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-03 12:37:08

供参考:我在https://groups.google.com/forum/?fromgroups#!topic/neo4j/5Cle5vBsMXQ上回答了这个问题

您需要在请求的正文中传递密码查询,而不是作为查询param传递。有关工作示例,请参见https://gist.github.com/sarmbruster/8114445

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20761305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档