2013-05-15 4 views
1

나는 Last.fm과 통합되는 아주 기본적인 Grails 애플리케이션을위한 토대를 마련하고 있습니다. 나는 세션 키를 얻을 사용자 인증에 붙어있어. 설명서에서, 코드에서 아래에있는 형식의 매우 간단한 HTTP POST처럼 들립니다. 나는 HTTPBuilder의 포스트 요청 (POST) 내가 찾은 모든 변화하지만,이 같은 뭔가 밖으로 모든 오류 시도했다 :Groovy HTTPBuilder 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 -X POST -d "token=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&api_key=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX&method=auth.getSession&api_sig=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" http://ws.audioscrobbler.com/2.0/ 

링크 :

답변

3

, 즉이다.

로 교체 :

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

... 그런 짓을해야합니다.

또는 당신은 또한에 수입 변경할 수 있습니다 :

import static groovyx.net.http.Method 

Method.POST을 계속 사용.

+0

내가 가까워 져야한다는 것을 알았어 :) 고마워. – turnerd18

+0

여러분을 환영합니다! :) – elias