http://site.company.tld/_vti_bin/ListData.svc/YourList?$skip=100&$top=100&$select=Year,Month,ID&$filter=Year%20eq%20%272014%27%20and%20Month%20eq%20%27Mar%27
Here's a complete example in Python, TestSharePoint2010REST.py:
"""
SharePoint2010 REST test app by Cees Timmerman, 24jun14.
"""
# Fix Python 2.
from __future__ import print_function
try: input = raw_input
except: pass
try: import urllib.request as urllib2
except: import urllib2
try: from ntlm3 import HTTPNtlmAuthHandler
except: from ntlm import HTTPNtlmAuthHandler
import json, re, time
web_domain = "http://subdomain.company.tld/"
user = "company\\user"
password = "secret"
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, web_domain, user, password)
auth_NTLM = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passman)
opener = urllib2.build_opener(auth_NTLM)
urllib2.install_opener(opener)
url = web_domain + "_vti_bin/ListData.svc/TimeRegistration?$filter=Modified%20gt%20datetime\'2014-04-30T00:00:00.000Z\'&$orderby=Modified%20asc&$select=Id,Year,Month,Hours,Project,Resource&$top=2050"
months = "Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(",")
count = 0
while 1:
print(url)
request = urllib2.Request(url)
request.add_header("accept", "application/json;odata=verbose") # The default format is application/atom+xml. Example: "accept":"application/json;odata=verbose"
response = urllib2.urlopen(request)
headers = response.info()
body = response.read().decode("utf-8")
body = re.sub(r"(?<!\\)\\'", "'", body) # Fix MicrosoftSharePointTeamServices 14.0.0.6029's incorrect JSON output. http://stackoverflow.com/questions/24390258/json-module-bug-in-python-3-4-1/24390987#comment37724338_24390290
print("Headers: {}".format(headers))
print("Body start: " + body[:800])
print("==========================\nBody end: " + body[-800:])
#err_loc=314020; print(">>>>>>Parse Error: {}<<<<<<".format(body[err_loc-40:err_loc+40])) # Debug output using value from thrown error.
j = json.loads(body)
results = j['d']['results'] if 'results' in j['d'] else j['d']
print("Len: %r" % len(results))
for item in results:
count += 1
print(item['Resource'].replace("company\\", ""), item['Project'], float(item['Hours']), "{}-{:02}-01".format(item['Year'], 1+months.index(item['Month'])), item['Id'])
print("Count: %s" % count)
# End loop or process next batch of 1000.
url = None
try: url = j['d']['__next']
except: pass
if not url: break
No comments:
Post a Comment