Вызовы API в приложении не могут быть отлажены в Charles / Fiddler (обход прокси)

Мое приложение разработано с использованием Xamarin.Android. Когда я пытаюсь выполнить отладку API с помощью Charles, я не вижу API в Charles. Но я могу видеть API других приложений, установленных на моем устройстве.

Я установил прокси-сервер на устройстве Android, принимающем IP-адрес моей системы.

Вот код, который я использовал в коде PCL, который используется как для IOS, так и для Android.

return new HttpClient(new AuthenticatedHttpClientHandler(new NativeMessageHandler()))
        {
            BaseAddress = new Uri(baseUrl),
            Timeout = new TimeSpan(0, 0, timeout)
        };


public class AuthenticatedHttpClientHandler : DelegatingHandler
{
   public AuthenticatedHttpClientHandler(HttpMessageHandler innerHandler) :    base(innerHandler)
   {
   }
   protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   {
       //------
   }
}

Это общий код, написанный на PCL. В IOS API не обходятся через прокси и не могут отслеживать его в Charles.


person Aju    schedule 17.08.2016    source источник


Ответы (1)


Mono HttpClient не использует настройки прокси. Настройте свое приложение для использования собственного ClientHandler.

https://developer.xamarin.com/releases/android/xamarin.android_6/xamarin.android_6.1/#Native_HttpClientHandler

  • добавить файл в свой проект
  • вставить XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandler
  • установите действие сборки на AndroidEnvironment

введите здесь описание изображения

или создайте свой HttpClient, например:

var client = new HttpClient (new Xamarin.Android.Net.AndroidClientHandler ());
person Sven-Michael Stübe    schedule 17.08.2016
comment
Код HttpClient написан на PCL, он общий как для IOS, так и для Android. Поэтому я не думаю, что могу использовать Xamarin.Android.Net.AndroidClientHandler в своем коде. - person Aju; 19.08.2016
comment
Вы можете. Как я сказал. - person Sven-Michael Stübe; 19.08.2016
comment
В моем коде PCL я использовал этот код новый HttpClient (новый AuthenticatedHttpClientHandler (новый NativeMessageHandler ())) - открытый класс AuthenticatedHttpClientHandler: DelegatingHandler - person Aju; 19.08.2016
comment
Вы можете, если вы используете фабрику и используете внедрение зависимостей или что-то еще, чтобы разрешить фабрику во время выполнения. - person Sven-Michael Stübe; 20.08.2016
comment
Теперь я могу видеть звонки Http, но не звонки Https. - person Aju; 22.08.2016