带有 URL 的 Grails 中的 HTTP GET 请求

HTTP GET request in Grails with urls

我在带有 urls 的 Grails 中使用 HTTP GET 请求时遇到问题。我的计划是从 url 中读取保存的参数。就像有一个名为地址的参数,其中包含保存的内容。例如:http://mydomain.de/property?address=Alexanderplatz+3%2C+Berlin%2C+Deutschland=&submit=start。 在这里,我将输入的地址提交到 url。还有另一个页面,在单击提交按钮后我将在该页面上被重定向,并且有一个带有名为 "address" 的输入字段的表单。在此输入字段中,我想将给定 url 中保存的地址提交为默认值。我是否需要以特殊方式配置我的 grails-app 的控制器?我有以下功能:

def create() {
    render(view: "form")
}

如何在 Grails 中执行 HTTP GET 请求?

使用HttpBuilder:

def http = new HTTPBuilder('http://www.google.com')

http.get( path : '/search',
      contentType : TEXT,
      query : [q:'Groovy'] ) { resp, reader -> 
  println "response status: ${resp.statusLine}"
  System.out << reader
}

更新:

BuildConfig.groovy:

grails.project.dependency.resolution = {
  ...
  dependencies {
    compile( 'org.codehaus.groovy.modules.http-builder:http-builder:0.5.2' ){ excludes 'groovy', 'xercesImpl' }    
  }
}

我在这里找到了完美的解决方案:Grails pass data to view from controller

在PropertiyController.groovy中:

def index = { 

    def parameter = 
    request.getParameter("address") 
   }

和:

def create() {
    def address = params.address;

    render(view: "form", model:[viewAddress:address]);
}

唯一需要额外更改的是为输入字段提供缺少的参数链接:

value="${viewAddress}"

完美运行!

对于那些后来像我一样遇到这个问题的人。

看起来 HTTPBuilder 有一个针对 Grails 3 的新版本:

https://github.com/http-builder-ng/http-builder-ng

这里有一些很好的例子:

https://http-builder-ng.github.io/http-builder-ng/asciidoc/html5/