在一個Xamarin.Forms應用程序中,我嘗試連接到Exosites api(這不是項目的一部分,所以我不能更改那個,所以SignalR左右)。Xamarin HttpClient請求超時
這對於「正常」請求都可以正常工作。
該API還支持長輪詢請求 - 在manual它說,客戶端必須設置頭「請求超時」的請求。
var client = new HttpClient();
var request = new HttpRequestMessage(HttpMethod.Get, requestUri);
request.Headers.Add("Request-Timeout", "10000");
var response = await client.SendAsync(request);
但是這樣做,我沒有得到任何答案,即使我將超時設置爲非常小的值,如1(毫秒)。如果我設置一個超時請求到Exosites上的另一個端點,它不檢查它,它工作正常。發送沒有「Request-Timeout」頭的完全相同的請求也可以正常工作。
有沒有人在使用HttpClient的Xamarin中進行長輪詢調用的經驗?
非常感謝!
tschuege
謝謝。據我所知client.Timeout是不同的東西 - 一些HttpClient的內部。我發現它是一個計時器,它在發送請求時啓動,並且在請求返回之前耗盡通知主叫方得到通知。服務器確實參與其中。另一方面,標題「Request-Timeout」被髮送到服務器。在Exosites案例中,服務器不會立即回答,而是等待更改或時間耗盡。我用client.Timeout試了一下,即使沒有變化,也立即得到了答案 - 所以沒有長時間的投票。 – tschuege
這不是每次處理HttpClient的理由。這是很多人http:// stackoverflow常見的錯誤。COM /問題/ 15705092/DO-HttpClient的-和httpclienthandler具備的,要被佈置 –