gpt4 book ai didi

grails - Groovy HTTPBuilder POST : missing method(s)

转载 作者:行者123 更新时间:2023-12-02 14:20:10 27 4
gpt4 key购买 nike

我正在为一个与 Last.fm 集成的非常基本的 Grails 应用程序奠定基础。我被困在获得 session key 的用户身份验证上。从文档来看,这听起来像是一个非常简单的 HTTP POST,格式如下。我已经尝试了我发现的 HTTPBuilder 的 post 和 request(POST) 的每一个变体,但是所有的错误都是这样的:

| Server running. Browse to http://localhost:8080/GroovyLastFM
| Error 2013-05-14 19:57:10,042 [http-bio-8080-exec-3] ERROR errors.GrailsExceptionResolver - MissingPropertyException occurred when processing request: [GET] /GroovyLastFM/RecentSongs/tokenChecker - parameters:
token: 452b5619f98e3b66cec11b61940af500
No such property: Method for class: GroovyLastFM.User. Stacktrace follows:
Message: No such property: Method for class: GroovyLastFM.User
Line | Method
->> 28 | getSession in GroovyLastFM.User

我不知道我还需要导入什么,但显然缺少一些东西。 这是 grails 插件的用武之地吗?如果是这样,我需要在应用程序级别包含什么才能使 HTTPBuilder 工作? 我对 grails 很陌生,不确定什么值得添加依赖项,或者如何做到这一点。另外,我在 Grails 2.1.1 上并且没有使用 IDE。谢谢!
package GroovyLastFM

@Grab(group='org.codehaus.groovy.modules.http-builder', module='http-builder', version='0.5.0-RC2' )
import java.security.MessageDigest
import groovyx.net.http.HTTPBuilder
import static groovyx.net.http.ContentType.*
import static groovyx.net.http.Method.*

class User {
String token
String api_key = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
String secret = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

User (String token) {
this.token = token
getSession()
}

def getSession() {
String signature = md5("api_key" + api_key + "methodauth.getSessiontoken" + token + secret)
def postbody = [token:token, api_key:api_key, method:'auth.getSession', api_sig:signature]
def http = new HTTPBuilder("http://wx.audioscrobbler.com/2.0/")
http.request(Method.POST) {req->
headers.accept = "application/xml"
requestContentType = ContentType.URLENC
body = postbody
response.success { resp,xml->
// read xml response
}
}
}

我还尝试了一个基本的 curl 帖子以确保我的参数正确,并且它确实返回了我预期的 session key :
curl -X POST -d "token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&api_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&method=auth.getSession&api_sig=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" http://ws.audioscrobbler.com/2.0/

链接:
  • Last.fm API:www.last.fm/api/webauth
  • 我正在构建的上一篇文章:HTTPBuilder HTTP Post url encoded parameters and accept xml response?
  • HTTPBuilder 博士后:http://groovy.codehaus.org/modules/http-builder/doc/post.html
  • 最佳答案

    您正在导入 groovyx.net.http.Method.*并使用 Method.POST ,这就是为什么你得到 No such property: Method .

    将其替换为:

    http.request(POST) { req ->  ... }

    ......应该这样做。

    或者,您也可以将导入更改为:
    import static groovyx.net.http.Method

    并继续使用 Method.POST .

    关于grails - Groovy HTTPBuilder POST : missing method(s),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16555408/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com