Grails Groovy-HTTPBuilder+;RxJava返回一个空对象/可观察对象

Grails Groovy-HTTPBuilder+;RxJava返回一个空对象/可观察对象,grails,groovy,rx-java,Grails,Groovy,Rx Java,这就是我在服务类中编写的方法,用于调用Firebase auth REST API的登录名。但现在的问题是它没有返回任何数据 我在Intellij中调试它,我发现当我执行login.subscribe时,我希望它返回json给我,但它没有 那么我做错了什么呢?我不是Groovy开发者,但这句话似乎是错的: def login(String email, String password, String apiKey) throws HttpResponseException { def

这就是我在服务类中编写的方法,用于调用Firebase auth REST API的登录名。但现在的问题是它没有返回任何数据

我在Intellij中调试它,我发现当我执行login.subscribe时,我希望它返回json给我,但它没有


那么我做错了什么呢?

我不是Groovy开发者,但这句话似乎是错的:

def login(String email, String password, String apiKey) throws HttpResponseException {

    def postBody = [
            email   : email,
            password: password
    ]

    def http = new HTTPBuilder('https://www.googleapis.com/identitytoolkit/v3/relyingparty/verifyPassword?key=' + apiKey)

    return Observable.just({ Observer observer ->

        def thread = new Thread({

            http.post(body: postBody, requestContentType: ContentType.JSON) { resp, json  ->
                println 'status code ' + resp.statusLine.statusCode
                if (resp.statusLine.statusCode == 200 || resp.statusLine.statusCode == 201) {
                    observer.onNext(json)
                } else {
                    observer.onError(new Throwable('broken'))
                }

                observer.onCompleted()

            }

            http.handler.failure = { resp ->
                observer.onError(new Throwable('failure'))
                observer.onCompleted()

            }

            http.handler.'400' = { resp ->
                observer.onError(new Throwable('bad request'))
                observer.onCompleted()

            }

        } as Runnable)

        thread.start()

        return Subscriptions.empty()
    })
}
您正在创建一个lambda对象,该对象将由just返回,但其中没有任何内容真正得到执行。您可能正在寻找

return Observable.just({ Observer observer ->
编辑:

return Observable.create({ Emitter emitter ->