gpt4 book ai didi

grails - 使用rest-client-builder插件发布自定义 header 值的问题

转载 作者:行者123 更新时间:2023-12-02 14:20:17 31 4
gpt4 key购买 nike

我正在使用最新的grails(2.1.2)和rest-client-builder插件版本1.0.3。我试图将自定义请求 header 值(例如SEC_USER)传递给目标服务器,该服务器使用此请求 header 值对请求进行预身份验证。我正在使用以下代码来传递值,但在接收端却没有得到 header 值。

RestBuilder rest = new RestBuilder(connectTimeout:5000, readTimeout:20000); 
rest.get("<some uri>") {
contentType MediaType.APPLICATION_JSON.toString()
header("SEC_USER", "foo")
}

查看RequestCustomizer,header()方法应在调用时设置HttpHeaders字段
header [名称] =值

这可能是该插件内部使用的RestTemplate类(方法交换(...))中的问题吗?

最佳答案

Grails通过动态方法增强了 Controller 类:
header(Object instance, String headerName, Object headerValue)
根据您在哪里使用构建器,很可能会调用它,而不是将header()块实际传递给构建器。当我将上面的代码放入 Controller 时,我看到了这种行为。解决此问题的一种方法是将闭包移动到src/groovy中的类中。例如,当我将调用代码更改为

def check() {
RestBuilder rest = new RestBuilder(connectTimeout:5000, readTimeout:20000);
rest.get("http://localhost:8080/so13789857/hello", Thing.getRestBuilderClosure())
}

闭包来自 src/groovy/so/Thing.groovy
static Closure getRestBuilderClosure() {
return {
contentType MediaType.APPLICATION_JSON.toString()
header("SEC_USER", "foo")
}
}

它解决了问题。

关于grails - 使用rest-client-builder插件发布自定义 header 值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13789857/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com