Workday Studio - 请求HTTP输出到供应商API接收错误:未定义名为“http-token-auth”的bean
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Workday Studio - 请求HTTP输出到供应商API接收错误:未定义名为“http-token-auth”的bean相关的知识,希望对你有一定的参考价值。
我有一个Workday工作室集成,使用HTTP组件向供应商的API发送GET请求,但我收到以下错误。供应商没有用于连接的用户名/密码。我必须使用令牌进行连接。有谁知道如何使这项工作从Studio到GET数据?
原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为'http-token-auth'的bean
我已经以多种不同的方式发送请求:使用令牌对URL进行硬编码,使用令牌设置标头。以下是我的不同尝试。
我不确定应该使用什么Http授权。没有用户名/密码,只有一个令牌和一个使用CURL发布的URL。下面是工作室与HTTP属性的相似之处。
此外,我能够使用SoapUI获取数据。下面是SoapUI中请求的片段。
下面是SoapUI中的JSON原始请求,它成功地从API获取数据。
任何帮助深表感谢!!
谢谢,-Remo
前言;我对Workday Studio不熟悉,似乎没有任何公开文档,因此这里的答案可能会有一些细微差别。
摘要
工作日,您的代码或可能正在使用的库正在引用一个不存在或无法找到的bean(请参阅Spring docs:Core Technologies)。
如果你在这里没有编写任何Java代码,那几乎肯定是配置问题或Workday Studio中的错误。以下是基于您提供的信息的一些观察结果。但首先,一个疯狂的猜测。
胡乱猜测
似乎工作日处理这个问题的方式与cURL或SoapUI略有不同。 cURL和SoapUI正在执行以下操作:
- 使用params将GET请求发送到URL,并在标头中包含API密钥
- 服务器发送所需的响应
然而,听起来Workday正在做更多的事情:
- 使用challenge-type:'token'发送预先验证方案的GET请求
- 服务器以正确的auth-type响应其框架(可能是Rails)用于令牌; 'HTTP-令牌身份验证'
- Workday(错误地)假设服务器正在使用Spring框架,并尝试基于该响应加载正确的auth类型bean
- Spring框架barfs,因为没有这样的bean
我想有一些方法可以让Workday与标准REST API很好地配合,并且只是按照预期提供给供应商服务器的API密钥,而不是尝试做出挑战/响应。
如果不是这样的话,下面会有更多的杂草可能性。
奇豆名
错误中指定的bean名称是http-token-auth
,它是kebab-case。命名bean的约定是(lower-)camelCase,所以指定的地方可能刚刚使用了错误的大小写。
这可以是Workday Studio配置,XML配置文件或您编写的一些自定义代码(如果有)。
组态
如果bean名称正确,则可能存在其他一些配置问题。 Spring可以通过扫描类路径(参见Spring docs:Classpath scanning and managed components)或从项目XML加载它来隐式检测候选组件。问题可能是:
- 构建路径是错误的(如果您不熟悉,请参阅this answer by esaj)
- 类路径是错误的,所以Spring只是看不到它。在这种情况下,这似乎是特定于Workday的配置。
- bean在项目XML中,但是嵌套了。在这种情况下,它只能被封闭的bean访问。对此的一个解决方案是激活相应的配置文件。
- 包装问题;如果bean未包含在生成的已部署jar中,则会出现问题。 This solution by dawrutowicz应该适用于许多情况。
- 项目配置;屏幕截图中的所有设置看起来都完全正确,应该可以正常工作,因此项目设置中可能隐藏了一些内容
Workday Studio中的错误
这似乎不太可能,但总是有可能。如果您还没有编写任何Java代码,那么Workday代码中的某些内容会提供此意外的“http-token-auth”或者从其他地方不恰当地接受它并尝试使用它来加载bean。
最后的想法
由于您正在尝试使用供应商的API,我强烈建议您尝试与其中一位工程师合作。保证,他们至少有一名工程师以前处理过复杂的集成问题。他们将获得有关其API的更多详细信息,并且可能能够为您提供有关您能够共享的任何配置/代码的更多直接输入。
我在使用Bearer身份验证从Workday Studio向第三方Web服务发送Rest POST请求时报告了相同的错误消息。
解决方案是将标头输出类型设置为“message”而不是“rootpart”。它不是Workday Studio中的错误。
Workday Studio set header output type setting
问候,设拉子
以上是关于Workday Studio - 请求HTTP输出到供应商API接收错误:未定义名为“http-token-auth”的bean的主要内容,如果未能解决你的问题,请参考以下文章
Workday Human Resources API - 请求服务版本无效
Workday 请求在 SoapUI 中有效,但在 Postman 中无效