0
我正在嘗試對AtTask RESTful API進行Get請求以獲取1000個項目對象。 ATask API documentation給出了一些關於如何做到這一點的提示。我需要對我要請求的對象數進行分頁。想象一下,我需要抓取過去7天內可用的任何對象,但我不知道對象的確切數量,因此我如何更改以下代碼來實現此目的,所以我不知道應該是什麼值我的分頁,我不知道,如果我可以遞歸發送Get請求,直到所有的數據被提取。通過AtTask RESTful API獲取和分頁所有數據
public JToken Search(ObjCode objcode, object parameters, int limit = 100)
{
VerifySignedIn();
string[] p = parameterObjectToStringArray(parameters, "sessionID=" + SessionID);
JToken json = null;
if (limit > 100)
{
json = client.DoGet(string.Format("/{0}/search?$$LIMIT={1}", objcode,limit),limit,p);
}
else
{
json = client.DoGet(string.Format("/{0}/search", objcode),limit,p);
}
return json;
}
public JToken DoGet(string path,int limit = 100 ,params string[] parameters)
{
return DoRequest(path,limit ,parameters);
}
public JToken DoRequest(string path,int limit, params string[] parameters)
{
if (!path.StartsWith("/"))
{
path = "/" + path;
}
string fullUrl = url + path + ToQueryString(parameters,limit);
if (DebugUrls) Console.WriteLine("Requesting: {0}", fullUrl);
WebRequest request = HttpWebRequest.CreateDefault(new Uri(fullUrl));
using (WebResponse response = request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
return ReadResponse(responseStream);
}
}
}
private string ToQueryString(string[] parameters, int limit = 100)
{
StringBuilder sb = new StringBuilder();
parameters.ToList().ForEach(s => sb.Append(s).Append("&"));
if (sb.Length > 0)
{
sb.Remove(sb.Length - 1, 1);
}
return limit > 100 ? "&" + sb : "?" + sb;
}