0

Apache CXF を使用して Exact Target SOAP API から 3000 レコードを取得しようとしています。応答ごとに最大 2500 レコードが返されます。したがって、「MoreDataAvailable」は取得できますが、残りのデータを取得できません。

コードは次のとおりです。

// Retrieve data
RetrieveRequestMsg retrieveRequestMsg = new RetrieveRequestMsg();
retrieveRequestMsg.setRetrieveRequest( retrieveRequest );
RetrieveResponseMsg retrieveResponseMsg = stub.retrieve( retrieveRequestMsg );
//System.out.println( "\n [Sends][overall status message] " + retrieveResponseMsg.getOverallStatus() );
results = retrieveResponseMsg.getResults();

while (retrieveResponseMsg.getOverallStatus().equals("MoreDataAvailable"))
{
    // FIXME: THis does not work for some reason :(
    retrieveResponseMsg = stub.retrieve( retrieveRequestMsg );        
    results.addAll(retrieveResponseMsg.getResults());
}

機能しません-単に古いレコードを追加するだけです...

どんな助けでも大歓迎です!

4

1 に答える 1

0

完全に新しいリクエストを作成し、ContinueRequest を前のレスポンス メッセージの ID に設定する必要があることがわかりました。

if (retrieveResponseMsg.getOverallStatus().equals(
        "MoreDataAvailable")) {
    RetrieveRequest retrieveRequestCont = new RetrieveRequest();
    retrieveRequestCont.setContinueRequest(retrieveResponseMsg
            .getRequestID());
    RetrieveRequestMsg retrieveRequestMsgCont = new RetrieveRequestMsg();
    retrieveRequestMsgCont.setRetrieveRequest(retrieveRequestCont) ;

    RetrieveResponseMsg retrieveResponseMsgCont = stub
            .retrieve(retrieveRequestMsgCont);
    System.out.println("[overall status message] "
            + retrieveResponseMsgCont.getOverallStatus());
    apiObjectArray = retrieveResponseMsgCont.getResults();
} else {
    cont = false;
}

ここで見つけました: https://code.exacttarget.com/question/how-get-more-2500-records-using-java

于 2013-11-22T15:12:46.160 に答える