Grails RestBuilder在签名中找不到带有对象的endPoint

Posted

技术标签:

【中文标题】Grails RestBuilder在签名中找不到带有对象的endPoint【英文标题】:Grails RestBuilder dont findendPoint with Object in signature 【发布时间】:2022-01-09 05:17:36 【问题描述】:

我有一个带有 RestBuilder 的代码,需要连接到另一个应用程序,目标端点在签名中有一个带有属性的对象。问题是请求返回 404。我如何解决这个问题?我尝试使用 x-www-form-urlencoded(不起作用)

请求方法:

RestResponse restResponse;

String parameters = '"qtdThreads":3,"channel":"http://localhost:8081/application2"'

try 
    restResponse = new RestBuilder().post("http://localhost:8080/application/endPoint", 
        accept("application/json")
        contentType "application/json; utf-8"
        body(parameters.getBytes("UTF-8"))
        connectTimeout: 1000
    )
 catch (Exception e) 
    e.printStackTrace();
 finally 
    return restResponse;

目标端点:

Object endPoint(ObjectCommand command) 
    render(status: HttpStatus.OK)


签名使用的对象

import grails.validation.Validateable

@Validateable
class ObjectCommand 

    URL channel
    Integer qtdThreads

    static constraints = 
        qtdThreads(validator:  Integer val ->
            if (!val || val <= 0) 
                return "message1"
            
        )
        channel(validator:  URL val ->
            if (!val) 
                return "message2"
            
        )
    


【问题讨论】:

Java 7 - 1.7.0_241 Grails 2.3.11 【参考方案1】:

您是否检查过目标应用程序是否正在运行并公开该端点?

【讨论】:

是的。目标应用程序正在运行,endPoint 是公共的。 它在 8080 端口上? curl -v http://localhost:8080/application/endPoint 的输出是什么? 是的 8080。卷曲有效。

以上是关于Grails RestBuilder在签名中找不到带有对象的endPoint的主要内容,如果未能解决你的问题,请参考以下文章

解决“在证书存储区中找不到清单签名证书”

错误:测试预测时“在签名 def 中找不到服务默认值”

缺少代码签名权利 - 在捆绑包中找不到可执行文件的权利

在 XCode 中签名应用程序:在钥匙串中找不到指定的项目

在密钥链中找不到与此配置文件匹配的有效签名身份

Jetbrains Rider、Xamarin IOS 在钥匙串中找不到有效的 iOS 代码签名密钥