【问题标题】:How can I communicate with the Kronos API?如何与 Kronos API 通信?
【发布时间】:2012-04-06 09:58:21
【问题描述】:

我有一个 Kronos 入口点 http://kronos../wfc/XmlService 我应该能够访问但是当我在浏览器中打开它时,响应是:

<Kronos_WFC>
<Response Status="Failure" ErrorCode="1332" Message="WFP-01110 The MIME type of the request is invalid. Type Found: . Valid types: text/xml, application/xml."></Response>
</Kronos_WFC>

我应该怎么做才能使用网络服务?

顺便说一句,我正在使用 C# 与服务器通信。

【问题讨论】:

    标签: c# xml web-services kronos-workforce-central


    【解决方案1】:

    您可以通过浏览器获得该信息,因为 Kronos 服务器仅支持 POST 请求,而浏览器正在发出 GET 请求。这样做的原因是因为 Kronos 需要在正文中使用 XML,而 POST 是最合适的方法。

    访问 Kronos XML API 的方法是,将 WebRequest 设置为您的 URL,并将 Method 设置为 POST,如下所示:

    HttpWebRequest reqFp = (HttpWebRequest)HttpWebRequest.Create(KronosServerUrl);
    reqFp.Method = "POST";
    reqFp.ContentType = "text/xml";
    

    注意 ContentType 如何也设置为 text/xml。

    【讨论】:

      【解决方案2】:

      另外,您需要确保在 Kronos 的函数访问配置文件中检查了 XML API 访问权限。

      【讨论】:

        【解决方案3】:

        不仅是 XML 访问,用户还必须启用远程 api 访问

        【讨论】:

          【解决方案4】:

          您可以使用 XML POST 请求与 Kronos API 进行通信。

          WFC v5.0 Developer's Toolkit Programmer's Guide1 提供了使用各种语言与 Kronos API 进行通信的一般指南。第一章介绍了 XML API,它是所有 API 请求的发送方式。

          Logon Request

          Kronos WFC 的标准 XML 登录请求。这必须在任何其他请求之前先发送。

          <Kronos_WFC version="1.0">
            <Request Object="System" Action="Logon" Username="ValidUsername" Password="ValidPassword"/>
          </Kronos_WFC>
          

          回复:

          <Kronos_WFC version="1.0" TimeStamp="11/15/2017 3:35PM GMT-05:00">
              <Response Status="Success" Timeout="1800" PersonKey="123456" Object="System" Username="ValidUsername" Action="Logon" PersonNumber="112233">
              </Response>
          </Kronos_WFC>
          

          注销请求

          此注销请求将结束您的活动 Kronos 会话。

          <Kronos_WFC version="1.0">
            <Request Object="System" Action="Logoff"/>
          </Kronos_WFC>
          

          支付周期总请求

          此请求会加载 2017 年 10 月 20 日至 2017 年 10 月 27 日之间员工 12345 的工资期总计。

          <Kronos_WFC version="1.0">
            <Request Action="Load">
              <Timesheet>
                <Employee>
                  <PersonIdentity PersonNumber="12345"/>
                </Employee>
                <Period>
                  <TimeFramePeriod PeriodDateSpan="10/20/2017 - 10/27/2017"/>
                </Period>
              </Timesheet>
            </Request>
          </Kronos_WFC>
          

          可在Workforce Timekeeping Developer Toolkit Reference Guide 中找到完整的 Kronos API 标签列表(需要登录)。


          您发送 POST 请求的方法可能因您的语言而异。但是,XML 请求格式和 API 入口点 (&lt;ServerName&gt;/wfc/XmlService) 应该适用于所有语言。

          以下是用于发送 Kronos 登录请求的 Python 3 脚本示例:

          import requests
          
          url = "http://localhost/wfc/XmlService"
          headers = {'Content-Type': 'text/xml'}
          data = """<Kronos_WFC version = "1.0">
                        <Request Object="System" Action="Logon" Username="SomeUsername" Password="SomePassword"/>
                    </Kronos_WFC>"""
          
          # Login to Kronos and print response
          session = requests.Session()  # preserve login cookies across requests
          response = session.post(url, data=data, headers=headers)
          print(response.text)
          

          WFC Developer's Toolkit Programmer's Guide 的第 2 章包括在 JavaVisual Basic 中发送 XML 请求的示例。但是,我建议您查看特定于您使用的任何语言的更新的 XML 或 HTTP 请求库。


          有用的资源

          脚注:

          1引用的文档最初是为 Kronos WFC 5.0 (API 1.0) 编写的。虽然以后的版本应该使用相同的 API,但我不能保证其他版本的准确性。 (见XML API version 6.3 to 8.0 upgrade

          【讨论】:

          • 嗨。我正在尝试遵循您的代码,因为我想从 Kronos 获取数据。我看不到您将在 java 示例中的哪个位置提供登录详细信息?
          • @AlGrant Java 代码用于向服务器发布 XML 请求。 XML 数据本身就是包含登录凭据的内容。 &lt;Kronos_WFC version="1.0"&gt;&lt;Request Object="System" Action="Logon" Username="ValidUsername" Password="ValidPassword"/&gt;&lt;/Kronos_WFC&gt;
          • 如果我们可以通过 iOS 应用访问 Kronos,这是否意味着 API 已启用?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-02-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-05-21
          • 2020-10-04
          • 2020-07-01
          相关资源
          最近更新 更多