2016-08-15 25 views
1

私はBloomberg APIを使用してBloombergからのデータを要求するコードを持っています。 必要な外部JARを修正し、新しいJDK(JDK 1.8)をインストールした後、問題なく動作しました。しかし、ブルームバーグから証券を請求したい会社IDを編集した後、私が再びそれを実行したとき、次の例外が表示されました。Bloomberg API NotFoundExceptionが発生しました

Exception in thread "main" com.bloomberglp.blpapi.NotFoundException: securityData not found in: HistoricalDataResponse 
     at com.bloomberglp.blpapi.impl.aL.e(ElementImpl.java:3070) 
     at com.bloomberglp.blpapi.impl.aL.d(ElementImpl.java:3045) 
     at com.bloomberglp.blpapi.impl.aL.getElement(ElementImpl.java:558) 
     at com.bloomberglp.blpapi.impl.h.getElement(MessageImpl.java:164) 
     at bbg_upload.test1.processHistoricalStockDataResponse(test1.java:252) 
     at bbg_upload.test1.handleResponseEvent(test1.java:221) 
     at bbg_upload.test1.doo(test1.java:206) 
     at bbg_upload.test1.main(test1.java:117) 

私はまだBloomberg APIに詳しくはありません。しかし、別のPCで同じコードを実行しようとすると、上記の例外を表示せずに実行されました。

ライン252のコードは、私はこのエラーを取得していますなぜ私はグーグルでてきた以下、 (「securityData」は、具体的ライン)

DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); 
String available_date = dateFormat.format(new java.util.Date()); 

Element securityDataArray = msg.getElement("securityData"); 
String ticker = securityDataArray.getElementAsString("security"); 
String line = ""; 
String value = ""; 

Element fieldDataArray = securityDataArray.getElement("fieldData"); 

です。私はそれが別のPC上で正常に動作するのでBloomberg APIの実装にはないと思う。それは環境変数と関係がありますか?

答えて

2

私はすでにメッセージがresponseError

DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); 
String available_date = dateFormat.format(new java.util.Date()); 

if(msg.hasElement("responseError")){ 
    System.out.println("responseError encountered! " + msg.getElement("responseError").getElement("message")); 
} 

Element securityDataArray = msg.getElement("securityData"); 
String ticker = securityDataArray.getElementAsString("security"); 
String line = ""; 
String value = ""; 

Element fieldDataArray = securityDataArray.getElement("fieldData"); 

を持っている場合、私はチェックしようとしている追加それはElement securityDataArray = msg.getElement("securityData");

に失敗した理由を考え出したそれから、次のように表示されました。 (私はUUIDを交換し、SN、SID、セキュリティ目的のためのxのでNID)

responseError encountered! message = uuid: xxxxxxxx, SN: xxxxxx, sid: xxxxxxx Monthly limit reached. [nid:xxx] 

私が最初に報告されたPCは、コードが正常にhasn走るどこながら、問題のあるPC上のブルームバーグの端末は、その限度額に達していますまだ。 (それはresponseErrorに遭遇しません)

0

いずれかのマシンに設定されているロケールによっては、このコード行の出力日:String available_date = dateFormat.format(new java.util.Date());は、使用しているマシンと2番目のマシンで同じではない可能性があります。他のものではありません。

Dateは、Unixエポック(1970年1月1日00:00:00 UTC)からのミリ秒数のコンテナです。

tにはフォーマットの概念がありません。例えば

...

Date myDate = new Date(); 
System.out.println(myDate); 
System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(myDate)); 
System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(myDate)); 
System.out.println(myDate); 

出力...

水曜日8月28日16時20分39秒EST

2013 2016年8月28日2013年8月28日

水曜日8月28日午後4時20分39秒 EST 2016

フォーマットのいずれも、基礎となる日付の値を変更していません。これはDateFormattersの目的です

日付にtostringを実行し、その上でフォーマッタを使用してみてください。お役に立てれば。

+0

私は以下を実行しようとしました 'String available_date = dateFormat。format(new java.util.Date()。toString()); ' それは私に' java.lang.IllegalArgumentException'を与えます。 format()メソッドはDateオブジェクトに対してのみ動作し、stringでは動作しません。 また、私は両方のPCに日付を印刷してみました。それは私に同じフォーマットを与えます。つまり、 'new java.util.Date()'は_Tueを返します。Aug 16 09:44:44 SGT 2016_ 'dateFormat.format(new java.util.Date());'は両方のPCで_20160816_ を返します。 – Krish

関連する問題