Api 无法在 Charles/Fiddler 中调试应用程序中的调用(绕过代理)

Api calls in the app is not able to be debugged in Charles/Fiddler (Bypassing proxy)

我的应用程序是使用 Xamarin.Android 开发的。当我尝试使用 Charles 进行 API 调试时,我无法在 Charles 中看到 API。但我可以看到 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 中对其进行跟踪。

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 ());