Использование HttpClient в проекте ядра Xamarin

Я делаю проект для нескольких платформ, где я следовал лучшим практикам и создал основной проект, чтобы содержать весь код, который одинаков на всех платформах. Для сетевой связи я хотел бы использовать HttpClient, который, по-видимому, является рекомендуемым подходом для общения с веб-службами в будущем.

Я не делаю PCL, а просто стандартную библиотеку C#, чтобы содержать основной проект. Однако, как представляется, общего осуществления HttpClient, но только для конкретной платформы. Я не могу ссылаться и использовать его в своем ядре, но только в моих проектах Android и iOS.

Я бы очень предпочел иметь весь сетевой код в моем основном проекте, и, как я вижу, есть два варианта - ни один из которых мне не нравится.

  1. сделайте общий интерфейс, который я могу использовать в основном проекте, который реализован как оболочка на Android и iOS.
  2. использовать другую технологию, которая поддерживается в ядре проект - я думаю 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 что вы можете голосовать, если хотите.