Ошибка мониторинга трафика HTTP при использовании MonoTouch, HttpClient и Charles Proxy

Я новичок в классе HttpClient, и у меня проблема с запросами на мониторинг с использованием Charles Proxy . В основном мне нужно отслеживать запросы, которые сделаны либо с симулятора, либо с фактического устройства iOS. Здесь вы можете найти отличный учебник о том, как настроить Charles для разработки iOS. Например, я делал простые запросы HttpClient, просто простую авторизацию

async Task<string> authorizeUser() { HttpClient _client = new HttpClient (); _client.BaseAddress = new Uri("https://...../api/"); _client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue ("bearer", token); var content = new FormUrlEncodedContent(new[] { new KeyValuePair<string, string>("grant_type", "password"), new KeyValuePair<string, string>("username", "theUserName"), new KeyValuePair<string, string>("password", "thePassword") }); var result = await _client.PostAsync("auth", content); string resultContent = result.Content.ReadAsStringAsync().Result; return resultContent; } 

Код работает, пользователь авторизуется, и токен-носитель возвращается. Но в чем была проблема, что мои запросы на симулятор не появлялись в списке мониторинга трафика http:

Я подумал, возможно, это потому, что я использую симулятор, но это было не так. Я попробовал открыть сафари и просмотрел веб-страницу, и сразу появился трафик. Так что проблема не в симуляторе.

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

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

Следующее, что я сделал, я загрузил образец монотекса HttpClient . И хорошая новость заключается в том, что существует несколько способов отправки запросов, на самом деле четыре из них – 1. http WebRequest, 2. https WebRequest, 3. http NSUrlConnection, 4. HttpClient.

И я попробовал их всех, так как вы можете догадаться, что первые три отлично появились в charles, но последний HttpClient снова я не знаю, почему не отображался на экране журнала трафика.

Поэтому я на 100% уверен, что проблема – это класс HttpClient, который я не знаю, почему, несмотря на то, что он работает нормально, это отправка / получение запросов, запросы, сделанные этим классом, не могут быть захвачены Чарльзом ,

И, чтобы исключить последнюю возможную причину этой проблемы, может быть, проблема в том, что в Чарльзе я также попытался использовать Fiddler в Windows, который запускался как виртуальная машина на моем Mac ( здесь вы можете найти, как это сделать), одна и та же история повторялась – все запросы, сделанные HttpClient, не были захвачены, остальные (WebRequests, NSUrlConnection-s, открытые веб-страницы сафари) работали отлично.

Пожалуйста, может кто-нибудь предложить мне, является ли это какой-то ошибкой, может быть, есть обходное решение или другое решение этой проблемы.

Спасибо всем за ваши ответы

С уважением Гагик

One Solution collect form web for “Ошибка мониторинга трафика HTTP при использовании MonoTouch, HttpClient и Charles Proxy”

Существует много способов инициализации HttpClient . Некоторые способы не будут разговаривать с ОС (полностью управляются) и не будут знать настройки прокси-сервера iOS.

Лучший (для iOS), как правило, использовать обработчик, который использует CFNetwork , см. Этот блог для более подробной информации. В основном это означает:

 var client = new HttpClient (CFNetworkHandler ()); 

В противном случае вам нужно установить HttpClientHandler.Proxy в CFNetwork.GetDefaultProxy . Например

 var handler = new HttpClientHandler { Proxy = CFNetwork.GetDefaultProxy (), UseProxy = true, }; var client = new HttpClient(handler); 
  • Как запускать TouchUpInside UIButton программно в xamarin ios C #
  • Уведомления о привязке MonoTouch в сторонней библиотеке
  • Проблема с использованием пользовательского арабского шрифта на iPhone
  • Изменение цвета точек UIPageControl в MonoTouch
  • Пользовательский цвет UIButton в MonoTouch
  • Как вы можете объединить только 2 из углов на Xamarin.iOS UITableView?
  • Кнопка «Готово» не срабатывает Завершенное событие на Xamarin Entry
  • Изображение кнопки не центрируется по вертикали
  • iPhone: переход Fade между двумя RootViewControllers
  • Утечка памяти Xamarin iOS повсюду
  • iOS8 - внешний вид аксессуаров клавиатуры с динамической высотой
  • Interesting Posts

    Нарисовать круг с отверстием с помощью MKOverlayRenderer не работает

    Дивный текст UIButton при прослушивании

    Подключение к внешней базе данных в iOS

    Невозможно скрыть навигационные панели в Safari iOS 7 для iPhone / iPod touch

    Parse BaaS iOS LoginFields в Swift – .value следует изменить на?

    Как настроить uiscrollview для загрузки данных, когда он достигнет нижней точки

    Изменение размера таблицы в виде листа на iPad при отображении клавиатуры

    SpringBoard <Warning>: Killing <appname> для установки приложения

    Изменить цвет UISwitch в состоянии «выключено»

    Периодически добавляйте узлы в сцену со случайным интервалом времени между

    Управление флажком для приложения iOS

    Использование @property и слабых свойств в Objective-C

    Как ребрендинг (и перераспределение) приложения iOS iPad?

    Изменение цвета панели инструментов MFMailComposeViewController

    iOS задает цвет фона для всех viewcontroller self.view's

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.