0

我在 MYOB 支持论坛上发布了这个问题,他们的支持团队回复说我最好联系熟悉 SQL Server 的人。

我正在尝试从我们的 MYOB 文件中获取数据到 SQL 服务器中。我找到了下面的代码,但是它不会检索任何数据(我想我需要输入用户名和密码作为参数,但我不确定如何)。

以下是我的代码(删除了公司文件信息)

Declare @Object as Int;
Declare @ResponseText as Varchar(8000);

Exec sp_OACreate  'MSXML2.XMLHTTP'
                , @Object OUT;
Exec sp_OAMethod   @Object
                , 'open'
                , NULL
                , 'get'
                , 'http://localhost:8080/AccountRight/fccce.....6e/GeneralLedger/TaxCode/?api-version=v2'
                , 'false'
Exec sp_OAMethod @Object
                , 'send'
Exec sp_OAMethod  @Object
                , 'responseText'
                , @ResponseText OUTPUT

Select @ResponseText

Exec sp_OADestroy @Object

任何人都可以帮助我吗?

谢谢你。

4

1 回答 1

1
  1. 您正在服务器上运行它,因此您应该实例化一个“MSXML2.ServerXMLHTTP”对象。
  2. 要对您的公司文件进行身份验证,请尝试 Exec sp_OAMethod @Object, 'open', NULL, 'GET', ' http://localhost:8080/[Your URL]', 'false', 'Administrator', '[admin password ]'
  3. 要获得您的回复,您可能必须调用 sp_OAGetProperty 而不是 sp_OAMethod
  4. API 根据格式查询字符串参数(默认为 JSON)返回 JSON 或 HTML。由于 API 具有 OData 接口,并且 OData 确实支持 XML 响应,因此您可以尝试请求 XML 响应。为此,您添加一个 Accept 标头:Exec sp_OAMethod @Object, 'setRequestHeader' 'Accept', 'application/xml'。
  5. 我有点犹豫的原因是,虽然我了解您想要实现的目标,但 API 的设计并未考虑到 MSXML2 库。我同意您的 URL 很好 - 如果不是 API 团队会让您直截了当。
  6. 通常您要做的是定义一个 DTO,然后使用从 API 返回的 JSON 对其进行初始化,然后将 DTO 映射到您的数据库中。查看http://developer.myob.com/api/accountright/code-samples-sdks/他们有 .Net、Java、PHP、Node 和 Ruby。感谢您希望剪掉中间的代码,祝您好运接受标头。
于 2015-02-26T23:31:58.867 回答