2013-06-25 2 views
2

Я использую Блумберг API для извлечения данных о рынке, это пример, приведенный с API SDKБлумберг не может начать сеанс

package blpapi; 

import com.bloomberglp.blpapi.CorrelationID; 
import com.bloomberglp.blpapi.Element; 
import com.bloomberglp.blpapi.Event; 
import com.bloomberglp.blpapi.Message; 
import com.bloomberglp.blpapi.MessageIterator; 
import com.bloomberglp.blpapi.Name; 
import com.bloomberglp.blpapi.Request; 
import com.bloomberglp.blpapi.Service; 
import com.bloomberglp.blpapi.Session; 
import com.bloomberglp.blpapi.SessionOptions; 

public class SimpleRefDataExample { 
    private static final Name SECURITY_DATA = new Name("securityData"); 
    private static final Name SECURITY = new Name("security"); 
    private static final Name FIELD_DATA = new Name("fieldData"); 
    private static final Name FIELD_EXCEPTIONS = new Name("fieldExceptions"); 
    private static final Name FIELD_ID = new Name("fieldId"); 
    private static final Name ERROR_INFO = new Name("errorInfo"); 
    private CorrelationID d_cid; 

    public static void main(String[] args) throws Exception { 
     SimpleRefDataExample example = new SimpleRefDataExample(); 
     example.run(args); 
     System.out.println("Press ENTER to quit"); 
     System.in.read(); 
    } 

    private void run(String[] args) throws Exception { 
     String serverHost = "localhost"; 
     int serverPort = 35230; 

     SessionOptions sessionOptions = new SessionOptions(); 
     sessionOptions.setServerHost(serverHost); 
     sessionOptions.setServerPort(serverPort); 

     Session session = new Session(sessionOptions); 

     System.out.println("Connecting to " + serverHost + ":" + serverPort); 
     if (!session.start()) { 
      System.err.println("Failed to start session."); 
      return; 
     } 
     System.out.println("Connected successfully."); 

     if (!session.openService("//blp/refdata")) { 
      System.err.println("Failed to open //blp/refdata"); 
      return; 
     } 

     Service refDataService = session.getService("//blp/refdata"); 
     Request request = refDataService.createRequest("ReferenceDataRequest"); 

     // append securities to request 
     Element securities = request.getElement("securities"); 
     securities.appendValue("IBM US Equity"); 
     securities.appendValue("/cusip/[email protected]"); 

     // append fields to request 
     Element fields = request.getElement("fields"); 
     fields.appendValue("PX_LAST"); 
     fields.appendValue("DS002"); 

     System.out.println("Sending Request: " + request); 
     d_cid = session.sendRequest(request, null); 

     while (true) { 
      Event event = session.nextEvent(); 
      MessageIterator msgIter = event.messageIterator(); 
      while (msgIter.hasNext()) { 
       Message msg = msgIter.next(); 
       if (msg.correlationID() == d_cid) { 
        processMessage(msg); 
       } 
      } 
      if (event.eventType() == Event.EventType.RESPONSE) { 
       break; 
      } 
     } 
    } 

    private void processMessage(Message msg) throws Exception { 
     Element securityDataArray = msg.getElement(SECURITY_DATA); 
     int numSecurities = securityDataArray.numValues(); 
     for (int i = 0; i < numSecurities; ++i) { 
      Element securityData = securityDataArray.getValueAsElement(i); 
      System.out.println(securityData.getElementAsString(SECURITY)); 
      Element fieldData = securityData.getElement(FIELD_DATA); 
      for (int j = 0; j < fieldData.numElements(); ++j) { 
       Element field = fieldData.getElement(j); 
       if (field.isNull()) { 
        System.out.println(field.name() + " is NULL."); 
       } else { 
        System.out.println(field); 
       } 
      } 
      Element fieldExceptionArray = 
       securityData.getElement(FIELD_EXCEPTIONS); 
      for (int k = 0; k < fieldExceptionArray.numValues(); ++k) { 
       Element fieldException = 
        fieldExceptionArray.getValueAsElement(k); 
       System.out.println(
         fieldException.getElement(ERROR_INFO).getElementAsString("category") 
         + ": " + fieldException.getElementAsString(FIELD_ID)); 
      } 
      System.out.println("\n"); 
     } 
    } 
} 

получать эту ошибку:

run: 
Connecting to localhost:35230 
Failed to start session. 
Press ENTER to quit 

локальный хост работает на моя система через xampp, я пробовал с портом по умолчанию: 8080, и без порта тоже не работал, тогда я запустил сервер стеклянной рыбы, который также работал http://localhost:35230, но все еще получал эту ошибку, какая еще требуется настройка?

+0

Какой продукт BB вы используете, Desktop или serverAPI? –

ответ

2

Порт по умолчанию для локального процесса bbcomm, как правило, 8194. Вам необходимо выполнить bbcomm.exe процесс, который будет подключен к Bloomberg через терминал Bloomberg.

+0

Привет, У меня есть файл bbcomm.exe, тогда такая же проблема также придет. –

1

Если вы используете Desktop API, API Bloomberg делает «Not», чтобы вы могли подключаться к любой другой машине, кроме локального. Это по дизайну.

Как объяснено выше порта по умолчанию для DesktopAPI является 8194. Проверьте файл BBCOMM.CFG, чтобы увидеть, если ваш используют порт 8194.

Также запустите файл BBCOMM непосредственно из командной строки, чтобы увидеть, если вы получаете ошибки.

Если вы используете ServerAPI, дайте мне знать ...