我在使用带有网址的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请求?
答案 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/