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
.
- 向您的项目添加一个文件
- 插入
XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandler
- 将生成操作设置为
AndroidEnvironment
或 创建您的 HttpClient,如:
var client = new HttpClient (new Xamarin.Android.Net.AndroidClientHandler ());
我的应用程序是使用 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
.
- 向您的项目添加一个文件
- 插入
XA_HTTP_CLIENT_HANDLER_TYPE=Xamarin.Android.Net.AndroidClientHandler
- 将生成操作设置为
AndroidEnvironment
或 创建您的 HttpClient,如:
var client = new HttpClient (new Xamarin.Android.Net.AndroidClientHandler ());