2

grails アプリケーションで使用したい Web サービスをいくつか開発しました。これらのサービスは、Get または POST プロトコルを使用して呼び出すことができます。

そのためには HTTP ビルダー オブジェクトを使用する必要があることがわかりました。

これは私のコードです:

import groovyx.net.http.HTTPBuilder
import groovyx.net.http.ContentType
import groovyx.net.http.Method
import groovyx.net.http.RESTClient
import groovyx.net.http.HttpResponseDecorator
        def http = new HTTPBuilder( 'http://localhost:8086' )
        http.request( GET, JSON ) {
          uri.path = '/RegistrationService/webresources/users/isRegistered'
          uri.query = [ login:'aa', password: 'bb' ]

          response.success = { resp, xml ->
            def xmlResult = xml
          }
        }

私が抱えている問題は、Netbeans でインポートごとにエラーが発生することです: Unable to resolve class groovyx.net.http.HTTPBuilder Unable to resolve class groovyx.net.http.ContentType ...

ただし、アプリケーションを実行しようとしましたが、コードを実行すると次のエラーが表示されます。

| Error 2013-02-25 23:33:32,596 [http-bio-8080-exec-3] ERROR errors.GrailsExceptionResolver  - MissingPropertyException occurred when processing request: [POST] /WordGame/user/authenticate
No such property: uriPath for class: groovyx.net.http.HTTPBuilder$RequestConfigDelegate. Stacktrace follows:
Message: No such property: uriPath for class: groovyx.net.http.HTTPBuilder$RequestConfigDelegate
    Line | Method
->>   21 | doCall    in wordgame.UserController$_closure2_closure4
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    425 | doRequest in groovyx.net.http.HTTPBuilder
|    359 | request . in     ''
|     19 | doCall    in wordgame.UserController$_closure2
|    195 | doFilter  in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|     63 | doFilter  in grails.plugin.cache.web.filter.AbstractFilter
|   1110 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    603 | run       in java.util.concurrent.ThreadPoolExecutor$Worker
^    722 | run . . . in java.lang.Thread

次のコマンドを使用して rest プラグインをインストールしました: grails install-plugin rest そして、既に netbeans インターフェイスを使用してインストールしようとしましたが、正しくインストールされていることがわかりました。

ファイル BuildConfig.groovy に次のような依存関係が必要ないくつかのフォーラムを見てきました。

dependencies {
     runtime('org.codehaus.groovy.modules.http-builder:http-builder:0.5.1') {
        excludes 'xalan'
        excludes 'xml-apis'
        excludes 'groovy'
    }
}

しかし、これは問題を解決していません。

詳細については、netbeans 7.2.1 と Grails 2.2.0 を使用しています。

私のコードに何か問題がありますか、それとも Web サービスをリクエストするためのより簡単な方法はありますか?

前もって感謝します。

4

2 に答える 2

5

それで、Exceptionあなたが投稿したコードスニペットをもう一度読みましたが、クロージャーreq内の変数を省略したようです。また、メソッドとコンテンツ タイプをhttp.request(){}インポートしていません。試す:GETTEXT

import groovyx.net.http.HTTPBuilder
//import groovyx.net.http.ContentType // this doesn't import ContentType
//import groovyx.net.http.Method // this doesn't import Method
import groovyx.net.http.RESTClient
import groovyx.net.http.HttpResponseDecorator

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

        def http = new HTTPBuilder( 'http://localhost:8086' )
        http.request( GET, JSON ) { req -> // 'req ->' is not present in your code snippet!
          uri.path = '/RegistrationService/webresources/users/isRegistered'
          uri.query = [ login:'aa', password: 'bb' ]

          response.success = { resp, xml ->
            def xmlResult = xml
          }
        }

また、http: //groovy.codehaus.org/modules/http-builder/doc/index.htmlにある HTTPBuilder のドキュメントを一読することをお勧めします。コードは十分に説明されており、いくつかのハウツーとチュートリアルもリストされています。 ;)

于 2013-02-26T14:27:40.477 に答える
3

私はちょうど私の問題を解決しました。これをダウンロードしてください: http://repository.codehaus.org/org/codehaus/groovy/modules/http-builder/http-builder/0.5.2/

groovy_installed_directory/lib の依存関係ディレクトリから httpBuilder.jar とすべての jar をコピーします。次に、コンソールを再起動して、もう一度やり直してください。

それが役に立てば幸い。ブラジル

于 2014-01-16T11:30:44.423 に答える