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