3

我正在尝试从 Visual Studio 中的解决方案连接到 Taleo API。Enterprise API(不要与 Taleo Business Edition API 混淆)是一个基于 SOAP 的 Web 服务,具有许多 WSDL 端点。

我可以在 SoapUI 中成功查询 API,但是,尝试在 Visual Studio 中添加服务引用时运气不佳。

这是我尝试过的:

  1. 添加了对 WSDL 的引用(注意出现的操作)。到现在为止还挺好...

    在此处输入图像描述

  2. Visual Studio 成功生成了必要的类,但是上面圈出的方法却无处可寻。我已经搜索了几个小时的 API,甚至在 Reflector 中进行了一些搜索……它们是真正的 MIA。

    在此处输入图像描述

几点观察:

  • 我可以在浏览器中查看原始 WSDL XML 时看到方法(如果您需要示例,我可以发布它)
  • 我可以在 SoapUI 中很好地查询这三种方法
  • 我的理解是这些方法只支持 HTTP POST,所以也许 Visual Studio 正在执行 GET 并且服务正在拒绝它?(我已经解决了这个问题,我看到的只是 200 个响应)
  • 我在代理后面(虽然,我能够在 SoapUI 中连接而无需配置代理)

此时,我正在考虑编写自己的 SOAP 客户端以使用 HttpWebRequest 执行查询,但我想在深入研究之前先尝试找出问题所在。

知道我在这里做错了什么吗?

4

2 回答 2

2

我也遇到了 API 问题。当我尝试按照 OP 的描述添加服务引用时,我在错误列表中收到了一系列错误,包括以下内容:

错误:System.Object[] 类型的成员 BusinessGoal.Items 隐藏了 multilingualStringField[] 类型的基类成员 BaseMultilingualEntity.Items。使用 XmlElementAttribute 或 XmlAttributeAttribute 指定新名称。

我能够使用较旧的 Web 引用机制来生成代理类。您可以在添加服务参考 → 高级 → 添加 Web 参考下找到它。这将生成一个 Reference.cs 文件,其中包含服务的代理类代码。您需要在 Visual Studio 中选择 Show All Files 才能看到隐藏在生成的 Web Reference 下的该文件。(也可以使用 Visual Studio 自带的 WSDL.exe 命令行工具生成 Reference.cs 文件)

使用这种方法,我的代理类包含缺少的方法,但我仍然需要手动编辑 Reference.cs 文件以将所有“[][]”替换为“[]”,因为许多生成的类型被错误地创建为锯齿状阵列。

于 2015-08-28T20:28:58.497 回答
1

我无法通过“添加服务引用”向导或旧的“Web 引用”方法添加对 Taleo API 的引用。我最终编写了自己的 SOAP 客户端,使用 HttpWebRequest 直接获取和发布 XML。

于 2012-12-19T08:08:29.413 回答