Android Fiddler捕获仿真器';s浏览器数据包,但不是我的应用程序';s

Android Fiddler捕获仿真器';s浏览器数据包,但不是我的应用程序';s,android,android-emulator,fiddler,Android,Android Emulator,Fiddler,我已经采取了Fiddler站点中描述的每一步来捕获我的应用程序(在emulator中运行)网络数据包奇怪的是,我可以解码从浏览器发送的http/https,但不能解码我的应用程序中的https数据包。更有趣的是,请求得到了成功的响应!知道有什么问题吗 我的存货充足,不知道我应该做什么,但我没有 我在Xamarin论坛上找到的第一个话题是。答案是设置DefaultWebProxy: 我把它放在MainActivity中,但它并没有解决我的问题 帮助我的是: 您需要更改代码以使用HttpClient

我已经采取了Fiddler站点中描述的每一步来捕获我的应用程序(在emulator中运行)网络数据包奇怪的是,我可以解码从浏览器发送的http/https,但不能解码我的应用程序中的https数据包。更有趣的是,请求得到了成功的响应!知道有什么问题吗


我的存货充足,不知道我应该做什么,但我没有

我在Xamarin论坛上找到的第一个话题是。答案是设置
DefaultWebProxy

我把它放在
MainActivity
中,但它并没有解决我的问题

帮助我的是:

您需要更改代码以使用HttpClientHandler和代理

看起来很简单,只有PCL在其捆绑的System.Net dll中不包含Web代理类,因此您需要通过扩展System.Net.IWebProxy接口来编写自己的 像这样

在完成所有这些工作之后,我能够在Android Emulator上捕获来自Xamarin.Forms应用程序的请求

    public override void OnCreate()
    {
        // get IP from fiddler's internet icon at the top right, or via ipconfig for VirtualBox used by Genymotion
        WebRequest.DefaultWebProxy = new WebProxy("192.168.56.1", 8888);
        base.OnCreate();
        ...
     }
HttpClientHandler handler = new HttpClientHandler () 
{
    Proxy = new WebProxy (new Uri("http://[Computer IP]:[Fiddler port number]")),
    UseProxy = true
};
using (var client = new HttpClient(handler))
{
    // Make your call in here
}
public class WebProxy : System.Net.IWebProxy
{
    public System.Net.ICredentials Credentials
    {
        get;
        set;
    }

    private readonly Uri _proxyUri;

    public WebProxy(Uri proxyUri)
    {
        _proxyUri = proxyUri;
    }

    public Uri GetProxy(Uri destination)
    {
        return _proxyUri;
    }

    public bool IsBypassed(Uri host)
    {
        return false;
    }
}