带有网址的Grails中的HTTP GET请求

时间:2015-01-28 14:04:22

标签: grails httprequest grails-controller

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

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

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

3 个答案:

答案 0 :(得分:1)

使用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' }    
  }
}

答案 1 :(得分:1)

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

in PropertiyController.groovy:

def index = { 

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

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

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

唯一要改变的是给输入字段missung param linke:

value="${viewAddress}"

完美无缺!

答案 2 :(得分:1)

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

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

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

这里有一些很好的例子:

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