3

我正在尝试使用带有 Jacob COM 包装器的 Groovy 与 HP Quality Center 交互,但我遇到了问题。

当我尝试运行以下代码时:

import com.jacob.activeX.ActiveXComponent
import com.jacob.com.*

def QCUrl = "http://qc.example.com/qcbin"
def QCcom = new ActiveXComponent("TDApiOle80.TDConnection")
def conQC = QCcom.getObject()
Dispatch.call(conQC, 'InitConnectionEx', QCUrl)

我得到这个例外:

com/jacob.com.ComFailException: Can't map name to dispid: InitConnectionEx

HP Quality Center OTA 明确表示这InitConnectionEx是我感兴趣的方法;但是,我觉得我在某个地方错过了一步。任何帮助将不胜感激。

4

2 回答 2

2

我曾经有过使用 Quality Center 及其 API 的令人怀疑的乐趣。我没有直接使用 Jacob,而是使用 Groovy Scriptom模块,它使 COM 脚本编写更容易接受。使用 Scriptom 连接到 QC 的代码如下所示:

import org.codehaus.groovy.scriptom.*

Scriptom.inApartment
{
    def tdc = new ActiveXObject ('TDApiOle80.TDConnection')
    tdc.InitConnectionEx('http://qc.example.com/qcbin')
    tdc.Login('user', 'password')
    tdc.Connect('domain','project')
}
于 2011-11-22T07:47:57.930 回答
2

经过大量的谷歌时间,我已经解决了我的问题。发生错误是因为我没有以管理员权限启动 SoapUI。

显然,如果您正在运行的应用程序没有管理员权限,那么它就无法创建必要的 ActiveXObjects。当我尝试实例化一个 ActiveXObject 时,我不会收到任何错误,但没有创建 TDConnection 对象,因此 InitConnectionEx 不存在。

以管理员权限启动 SoapUI 后,我可以连接。

我从阅读这篇文章中得到了这个想法。

于 2011-11-22T21:08:34.300 回答