Workday Studio - 使用HTTP向供应商API请求接收错误:没有名为' http-token-auth'已定义

时间:2018-03-14 14:27:42

标签: eclipse http workday-api

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

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

我已经通过多种方式发送请求:使用令牌对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

2 个答案:

答案 0 :(得分:2)

前言;我对Workday Studio不熟悉,似乎没有任何公开文档,所以这个答案可能会有一些细微之处。

摘要

工作日,您的代码或可能正在使用的库正在引用一个不存在或无法找到的bean(请参阅Spring文档:Core Technologies)。

如果您没有在此处编写任何Java代码,那么几乎可以肯定是Workday Studio中的配置问题或错误。以下是基于您提供的信息的一些观察结果。但首先,一个疯狂的猜测。

狂野猜测

似乎Workday处理这个问题的方式与cURL或SoapUI略有不同。 cURL和SoapUI正在执行以下操作:

  • 使用params将GET请求发送到URL,并在标题
  • 中包含API密钥
  • 服务器发送所需的响应

然而,听起来像Workday正在做更多的事情:

  • 使用challenge-type:'token'
  • 发送预先验证方案的GET请求
  • 服务器以正确的auth-type响应其框架(可能是Rails)用于令牌;的 'http-令牌-AUTH'
  • 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文档: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的更多详细信息,并且可能能够为您提供有关您能够共享的任何配置/代码的更多直接输入。

答案 1 :(得分:0)

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

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

Workday Studio set header output type setting

关于, 设拉子