Aha, thank you. I went through the block of links but didn't see the attachment at the end. Unfortunately, it gives no additional information about paging beyond your reply on Friday (though the typos are amusing).
I found and removed a complication: I was reading tasks' activities in nested loops. The tasks are actually paging OK, but not activities. I've swapped the process to spool leads in their entirety before looping through them again to read activities - and that's where the real problem is.
Checking the IDs returned, it looks like paging
is working for activities, but imperfectly: the second page has the same results as the first, and the third page returned has the second page of actual results. This is the case even if I manually specify startPosition.offset: I get the same results for task #2041892 if offset is 0 or 100. The pattern holds if I use a batch size of 50 or 20: the second page repeats the first, and subsequent pages proceed from there.
That's easily fixed, I simply track which page number I'm on and don't return the second. getMultipleLeads does not seem to have this problem, just getLeadActivity so far.
Unfortunately, the .Net layer wrapping a WSDL is opaque; it's really quite complex to get to the raw XML. Here's a typical request for getMultipleLeads:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:AuthenticationHeader xmlns:h="http://www.marketo.com/mktows/" xmlns="http://www.marketo.com/mktows/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mktowsUserId xmlns="">volusion1_604057994F982D94426080</mktowsUserId>
<requestSignature xmlns="">df9b34f783a186cf2661dc33849c2e329c74ec3f</requestSignature>
<requestTimestamp xmlns="">2013-01-14T21:36:33.069Z</requestTimestamp>
</h:AuthenticationHeader>
</s:Header>
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<paramsGetMultipleLeads xmlns="http://www.marketo.com/mktows/">
<lastUpdatedAt xmlns="">2013-01-14T00:00:00Z</lastUpdatedAt>
<streamPositionxsi:nil="true"xmlns=""/>
</paramsGetMultipleLeads>
</s:Body>
</s:Envelope>
Getting to the response is harder, not least because of the Gzipping.