代码之家  ›  专栏  ›  技术社区  ›  Torin M.

访问消息元素中的数据时出错

  •  1
  • Torin M.  · 技术社区  · 8 年前

    ReferenceDataRequest .下面是我用来填充会话的所有代码。

    global options
    options = parseCmdLine()
    sessionOptions = blpapi.SessionOptions()                                   
    sessionOptions.setServerHost(options.host)
    sessionOptions.setServerPort(options.port)
    session = blpapi.Session(sessionOptions)                            
    
    if not session.start():                                                  
        print ("Failed to start session.")
        return False
    
    if not session.openService("//blp/refdata"):                            
        print ("Failed to open //blp/refdata")
        return False
    
    refDataService = session.getService("//blp/refdata")                   
    request = refDataService.createRequest("ReferenceDataRequest")       
    request.getElement("securities").appendValue("UX1 Index")             
    request.getElement("fields").appendValue("FUT_DAYS_EXPIRE")
    cid = session.sendRequest(request)                                    
    
    while(True):                                                            
        ev = session.nextEvent(500)                                         
        for msg in ev:
            if cid in msg.correlationIds():
                # print(msg)
                data = msg.getElement("securityData").getElement("fieldData")
    
        if ev.eventType() == blpapi.Event.RESPONSE:
                break
    
    print(data)
    session.stop()
    

    blpapi.exception.UnknownErrorException: Attempt access name 'fieldData' on array element 'securityData' (0x00000003) .

    msg

    ReferenceDataResponse = {
        securityData[] = {
            securityData = {
                security = "UX1 Index"
                eidData[] = {
                }
                fieldExceptions[] = {
                }
                sequenceNumber = 0
                fieldData = {
                    FUT_DAYS_EXPIRE = 27
                }
            }
        }
    }
    

    1 回复  |  直到 8 年前
        1
  •  0
  •   Torin M.    8 年前

    解决方法是缩小 msg

    refDataService = session.getService("//blp/refdata")                    
    request = refDataService.createRequest("ReferenceDataRequest")         
    request.getElement("securities").appendValue("UX1 Index")             
    request.getElement("fields").appendValue("FUT_DAYS_EXPIRE")
    cid = session.sendRequest(request)                                     
    while(True):                                                           
        ev = session.nextEvent(500)                                        
        for msg in ev:      
            if cid in msg.correlationIds():
                data = msg.getElement("securityData").getValue().getElement("fieldData").getElement("FUT_DAYS_EXPIRE").getValue()
    
    
        if ev.eventType() == blpapi.Event.RESPONSE:
                break
    
    print(data)
    session.stop()
    

    查看中提供的示例 DAPI

    推荐文章