【问题标题】:Api calls in the app is not able to be debugged in Charles/Fiddler (Bypassing proxy)应用程序中的 API 调用无法在 Charles/Fiddler 中调试(绕过代理)
【发布时间】:2016-08-17 18:14:16
【问题描述】:

我的应用是使用 Xamarin.Android 开发的。当我尝试使用 Charles 进行 API 调试时,我无法在 Charles 中看到 API。但我可以看到我设备中安装的其他应用程序的 API。

我已经在安卓设备中设置了代理,从我的系统中获取 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 中对其进行跟踪。

【问题讨论】:

    标签: android xamarin proxy xamarin.android charles-proxy


    【解决方案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 ());
    

    【讨论】:

    • HttpClient代码是用PCL编写的,IOS和Android都通用。所以我认为我不能在我的代码中使用“Xamarin.Android.Net.AndroidClientHandler”
    • 你可以。正如我所说。
    • 在我的 PCL 代码中,我使用了这个代码“new HttpClient(new AuthenticatedHttpClientHandler(new NativeMessageHandler()))” - “public class AuthenticatedHttpClientHandler : DelegatingHandler”
    • 如果您使用工厂并使用依赖注入或其他方式在运行时解析工厂,则可以。
    • 现在我可以看到 Http 调用,但看不到 Https 调用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 2018-07-27
    • 2019-09-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    相关资源
    最近更新 更多