我使用bloomberg API(c ++)来完成一个项目。 我已经能够发送带有身份的请求了。 例如,我发送这样的请求:
Request request = session.createRequest("ReferenceDataRequest");
request.append("securities", "IBM US Equity");
request.append("fields", "PX_LAST");
session.sendRequest(request, identity, CorrelationId(20));
发送此请求后,我收到回复。 但是当我发布响应时,我总是得到一个例外:“NO_AUTH,不允许数据馈送用户的字段”。 处理响应的功能:
void handleResponseEvent(Event e, Identity identity)
{
MessageIterator msgIter(e);
while (msgIter.next())
{
Message message = msgIter.message();
message.print(cout);
}
}
我知道这不正确,因为我没有使用“身份”。我认为这就是为什么我得到一个例外“NO_AUTH”。 你能告诉我如何以身份发布回复吗?
澄清 - 我正在使用B-PIPE而不是D-API来连接彭博。
答案 0 :(得分:1)
如何初始化'身份'传递给sendRequest()的参数?如果您使用Desktop Api(DAPI),则不需要身份参数,并且可以按如下方式发送请求:
session.sendRequest(request, CorrelationId(20));
答案 1 :(得分:0)
使用B-PIPE,您是否确认您的OS_LOGON
或APPLICATION
已获得您所请求数据的授权?
如果从WAPI下载B-PIPE软件包,则可以使用(Windows)演示应用程序独立于您可能使用的任何代码检查您的登录凭据...
/path/to/BPipe/APIv3/bin/BLPAPIDemo.exe
设置您的身份验证类型,主机和端口:
然后通过设置您的代码/字段/日期并点击运行来测试您的数据请求:
如果您收到错误 - 例如EID权限问题 - 您知道您没有该数据的身份验证。如果是这种情况,您需要与您公司/ Bloomberg代表的B-PIPE经理取得联系。
如果您没有收到错误/确实获取了数据,那么问题出现在您的代码中......