2016-03-18 104 views
0

我試圖在下面的控制檯應用程序中使用webapi。ReadAsStringAsync無法獲取所有記錄

HttpResponseMessage rsp = await client.GetAsync("https://example.com/api/employees"); 
var responseString = await rsp.Content.ReadAsStringAsync(); 
var outer = Newtonsoft.Json.JsonConvert.DeserializeObject<OData<JArray>>(responseString); 

我可以從那裏獲得100條記錄。實際上,outer.count應該超過100個。

+1

聽起來像API可能會實現分頁,並且您需要發出多個請求才能獲得所有結果。 –

+0

謝謝喬恩。如果是這種情況,如何獲取所有記錄 –

+5

可能特定於API。檢查文檔\ – n8wrl

回答

0

返回的記錄數取決於Web API服務的HttpGet方法的內部實現。如果你可以發佈Get方法的執行EmployeesController,那麼我們可以解決這個問題。這裏沒有多少信息可以說明你爲什麼得不到預期的結果。

呼叫

HttpResponseMessage rsp = await client.GetAsync("https://example.com/api/employees");

簡單的說就是在Web API服務沒有與下面的「簽名」

public IEnumerable<Employee> Get() 
{ 
    // Dummy. Not returning IEnumerable<Employee> exactly, only for illustration 
    return employees; 
} 

在這個方法中的方法,有可能是一個制約因素限制返回的行數。例如。

public IEnumerable<Employee> Get() 
{ 
    // There could be such a constraint as illustrated below. 
    // Note the Take(100), this is the constraint or restriction 
    return employees.Where(x => x.Department == "HR").Take(100); 
} 

最後,沒有看到代碼,沒有人能告訴你爲什麼你沒有得到預期的結果。如果您不擁有該API,則需要聯繫擁有您正在使用的Web API服務的一方。