我正在实现一个依赖Bloombergs blpapilib2的工具,它是Bloomberg API COM Lib 3.5。
在让我的用户访问任何刷新数据功能之前,我想确保连接有效。到目前为止我的方法:
检查库是否可用并链接。基本上,通过引用的循环可以完成工作。
使用session.Start()打开连接。我希望在这里得到一个错误,但它不会给我一个。因此,第3步。
请求一些数据并进行验证(确保其不为空)
Surporisingly,我无法可靠地重现获得空洞的结果。我希望我的会话依赖于用户被闯入终端。看来我错了;即使我退出,我的请求也会被处理并返回正确的数据。
我可以想象两种情况:
bbcom-Server中的一些后台缓存
使用了另一种身份验证方法
我有两个问题:
Q1。确保用户能够下载数据的最佳方法是什么?
Q2。如何验证连接是否已成功建立且用户是否已通过身份验证?
感谢。
答案 0 :(得分:2)
要“切断”连接,您需要注销并登录其他计算机。如果您只是注销,则仍可使用API提供Feed。
这是我测试连接的方式 - 我认为它运行得相当好。我有一个BloombergWrapper
类来处理与API通信的所有低级内容,它具有以下功能:
Private pSession As blpapicomLib2.Session
Private pService As blpapicomLib2.Service
Private Sub Class_Initialize()
Dim locStatusBar As Variant
Dim locBbResult As Variant
On Error GoTo error_handler
If Application.StatusBar = False Then locStatusBar = False Else locStatusBar = Application.StatusBar
Application.StatusBar = "Connecting to Bloomberg..."
Set pSession = New blpapicomLib2.session
pSession.Start
pSession.OpenService ("//blp/refdata")
Set pService = pSession.getService("//blp/refdata")
Application.StatusBar = locStatusBar
Exit Sub
error_handler:
If InStr(Err.Description, "timeout") Then
Call MsgBox("A Bloomberg timeout has occured. Make sure you are logged on your terminal.", vbCritical + vbOKOnly, "Bloomberg error...")
End If
If locStatusBar <> "" Then Application.StatusBar = locStatusBar
End Sub
Private Sub Class_Terminate()
pSession.Stop
Set pSession = Nothing
End Sub