是否可以在OnStart()中的Xamarin Forms應用程序中創建一個httpclient實例,並在我的應用程序中的任何地方使用它。如何在Xamarin表單中的HttpClient上創建實例
0
A
回答
2
是的,你可以在你的應用中對所有請求使用相同的httpclient。但是您需要注意的是,如果有API具有不同的基本URL或標頭信息,那麼您需要爲此創建另一個httpclient。
我所做的是我有一個類來管理HttpClient實例。如果沒有與HttpConfig匹配的實例,它將創建並存儲它。如果已經有一個現有的實例,它會返回它。代碼
例(HttpService的是依賴注入):
public class HttpService : IHttpService
{
private static readonly int MAX_CLIENT = 5;
private Dictionary<HttpConfig, HttpClient> mClients;
private Queue<HttpConfig> mClientSequence;
public HttpService()
{
mClients = new Dictionary<HttpConfig, HttpClient>();
mClientSequence = new Queue<HttpConfig>();
}
private HttpClient CreateHttpClientAsync(HttpConfig config)
{
HttpClient httpClient;
if (mClients.ContainsKey(config))
{
httpClient = mClients[config];
}
else
{
// TODO: Create HttpClient...
if (mClientSequence.Count >= MAX_CLIENT)
{
// Remove the first item
var removingConfig = mClientSequence.Dequeue();
mClients.Remove(removingConfig);
}
mClients[config] = httpClient;
mClientSequence.Enqueue(config);
}
return httpClient;
}
...
}
HttpConfig是一流的,我存儲BASEURL,超時,接頭,驗證信息等,您將需要重寫Equals方法的類比較是否存在相同的配置。
public override bool Equals(object obj)
{
// Logic to determine whether it is same config
}
+0
單例模式 –
+0
你能給我一個你的類的示例來管理Httpclient嗎? – Afshin
相關問題
- 1. 在BackgroundWorker中創建表單的實例
- 2. Xamarin表單HttpClient GetAsync在iOS中失敗
- 3. Xamarin Forms - 如何在視覺上創建表單
- 4. ExtJS的4創建表單實例
- 5. 如何在Xamarin表單中實現搜索建議
- 6. 如何在xamarin表單中的標籤上創建點擊事件動態
- 7. 如何單元測試實例創建?
- 8. 如何在Xamarin表單中創建半屏相機視圖
- 9. 如何在Flash中「創建實例」?
- 10. 如何在BlackBerry中創建HTTPClient
- 11. Xamarin表單HTTPClient調用崩潰
- 12. 如何創建表單的不同實例
- 13. 如何列出模型的實例並使表單在同一視圖上創建實例?
- 14. 如何在PHP中創建單例?
- 15. Spring創建單例的多個實例?
- 16. 在Xamarin中使用HttpClient的SendAsync表單不等待
- 17. 如何創建CommonsMultipartFile實例
- 18. 如何創建QWebFrame實例
- 19. 如何在單個tomcat實例中創建兩個listners?
- 20. 如何在CDI上實時創建實例
- 21. 如何找到創建Java單例實例的位置?
- 22. 如何創建依賴類的單例實例?
- 23. 如何創建Xamarin菜單項目
- 24. Xamarin的HttpClient
- 25. 如何在R中創建比例表
- 26. 在Titanium中創建HTTPClient
- 27. 在Objective C中創建單例類的另一個實例
- 28. xamarin中沒有HttpClient
- 29. 如何在Xamarin中爲Locale創建BroadcastReceiver?
- 30. 如何在xamarin ios中創建類別?
是不是一個好主意,HttpClient的應在THEAD安全被調用,應該是一次性的,以正確地關閉所有網絡連接 – OrcusZ
@OrcusZ這是不正確的。你應該絕對重用一個HttpClient實例。 [問題](https://stackoverflow.com/questions/15705092/do-httpclient-and-httpclienthandler-have-to-be-disposed) –
@WillDecker所以MS文件和來源錯誤?您可以使用單個實例或createInstance方法。但是你應該檢查實例是否需要處理。此外,HttpClient已經是線程安全的,但不是所有的方法,所以你應該在線程安全的場景中使用方法 – OrcusZ