【问题标题】:HTTP GET request in Grails with urlsGrails 中带有 url 的 HTTP GET 请求
【发布时间】:2015-01-28 14:04:21
【问题描述】:

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

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

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

【问题讨论】:

    标签: grails httprequest grails-controller


    【解决方案1】:

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

    看起来 HTTPBuilder 为 Grails 3 推出了新版本:

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

    还有一些很好的例子:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我必须在哪里包含这个 HttpBuilder? - 在控制器文件中?
      • 你可以在任何你喜欢的地方包含它。控制器或服务似乎是合理的选择。
      • 好的。但是在创建 http 作为一个新变量之后,就像你写的开销一样,有一个名为“unexpected token: http”的错误。似乎是新变量不被接受还是我错了?
      • 您必须将依赖项包含到您的BuildConfig.groovy
      • 你有一个例子可以告诉我如何编写代码吗?这是我第一次使用 grails ...
      【解决方案3】:

      我在这里找到了完美的解决方案: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}"
      

      效果很好!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-06-01
        • 2015-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-22
        • 1970-01-01
        相关资源
        最近更新 更多