Workday Studio - 请求HTTP输出到供应商API接收错误:未定义名为“http-token-auth”的bean

问题描述 投票:1回答:2

我有一个Workday工作室集成,使用HTTP组件向供应商的API发送GET请求,但我收到以下错误。供应商没有用于连接的用户名/密码。我必须使用令牌进行连接。有谁知道如何使这项工作从Studio到GET数据?

原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有定义名为'http-token-auth'的bean

我已经以多种不同的方式发送请求:使用令牌对URL进行硬编码,使用令牌设置标头。以下是我的不同尝试。 enter image description here

我不确定应该使用什么Http授权。没有用户名/密码,只有一个令牌和一个使用CURL发布的URL。下面是工作室与HTTP属性的相似之处。 enter image description here

以下是标题上设置的内容。 enter image description here

此外,我能够使用SoapUI获取数据。下面是SoapUI中请求的片段。 enter image description here

下面是SoapUI中的JSON原始请求,它成功地从API获取数据。 enter image description here

任何帮助深表感谢!!

谢谢,-Remo

eclipse http workday-api
2个回答
2
投票

前言;我对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的更多详细信息,并且可能能够为您提供有关您能够共享的任何配置/代码的更多直接输入。


0
投票

我在使用Bearer身份验证从Workday Studio向第三方Web服务发送Rest POST请求时报告了相同的错误消息。

解决方案是将标头输出类型设置为“message”而不是“rootpart”。它不是Workday Studio中的错误。

Workday Studio set header output type setting

问候,设拉子

© www.soinside.com 2019 - 2024. All rights reserved.