Использование HttpClient в проекте ядра Xamarin
Я делаю проект для нескольких платформ, где я следовал лучшим практикам и создал основной проект, чтобы содержать весь код, который одинаков на всех платформах. Для сетевой связи я хотел бы использовать HttpClient, который, по-видимому, является рекомендуемым подходом для общения с веб-службами в будущем.
Я не делаю PCL, а просто стандартную библиотеку C#, чтобы содержать основной проект. Однако, как представляется, общего осуществления HttpClient, но только для конкретной платформы. Я не могу ссылаться и использовать его в своем ядре, но только в моих проектах Android и iOS.
Я бы очень предпочел иметь весь сетевой код в моем основном проекте, и, как я вижу, есть два варианта - ни один из которых мне не нравится.
- сделайте общий интерфейс, который я могу использовать в основном проекте, который реализован как оболочка на Android и iOS.
- использовать другую технологию, которая поддерживается в ядре проект - я думаю WebClient или тому подобное.
каков рекомендуемый подход и почему Xamarin не сделал HttpClient доступной в качестве общей библиотеки?
надеюсь, что кто-то может помочь, Спасибо
3 ответов
Я рекомендую проверить ModernHttpClient https://github.com/paulcbetts/modernhttpclient
Это кросс-платформенная сетевая библиотека для iOS и Android. Из проекта:
эта библиотека приносит последние платформы конкретных сетевых библиотек для Xamarin приложения с помощью пользовательского обработчика с помощью HttpClient. Напиши свой приложение с помощью системы.Сеть.Http, но поместите эту библиотеку, и она пойдет резко быстрее.
вы должны иметь возможность использовать System.Net.Http
в вашей основной библиотеке просто отлично, я сделал это недавно.
убедитесь, что ваша основная библиотека является проектом .Net 4.5. В параметрах проекта есть параметр для выбора версии .Net. После проверки этого, все, что вам нужно сделать, это ссылка System.Net.Http.dll
.
Если это не решит вашу проблему, вы на Windows или Mac(Xamarin Studio)?
боюсь, вы не можете использовать HttpClient на Mono в данный момент из-за ограничений лицензирования. Есть предложение UserVoice что вы можете голосовать, если хотите.