从SOAP API检索数据

从SOAP API检索数据,soap,cxf,exacttarget,Soap,Cxf,Exacttarget,我正在尝试使用ApacheCXF从精确的目标SOAP API检索3000条记录。 每个响应最多返回2500条记录。因此,我获得了“MoreDataAvailable”,但无法获得剩余的数据 代码如下: // Retrieve data RetrieveRequestMsg retrieveRequestMsg = new RetrieveRequestMsg(); retrieveRequestMsg.setRetrieveRequest( retrieveRequest ); Retrieve

我正在尝试使用ApacheCXF从精确的目标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());
}
它不起作用-只是添加了更多的旧记录


非常感谢您的帮助

结果是,我必须执行一个全新的请求,并将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;
}
我在这里找到的: