为啥使用 Xamarin 的 MobileServiceClient 单点触控实现的流量不显示在 Fidder/Charles 中
Posted
技术标签:
【中文标题】为啥使用 Xamarin 的 MobileServiceClient 单点触控实现的流量不显示在 Fidder/Charles 中【英文标题】:Why doesn't traffic using Xamarin's monotouch implementation of MobileServiceClient show up in Fidder/Charles为什么使用 Xamarin 的 MobileServiceClient 单点触控实现的流量不显示在 Fidder/Charles 中 【发布时间】:2014-05-15 12:25:26 【问题描述】:这可能与以下问题相同:
HTTP Traffic monitoring issue when using MonoTouch, HttpClient and Charles Proxy
但我想我会从 Windows Azure 移动服务客户端的角度来提问。当我将我的 ios 设备配置为指向 fiddler(在我的 windows 框上)或 charles(在我的 mac 上)时,我可以看到来自浏览器或使用 WebRequest 的 Xamarin 应用程序的所有流量。但是,如果我直接使用 Microsoft.WindowsAzure.MobileServices.MobileServiceClient(使用 HttpClient)或 HttpClient,则流量不会显示。
我试着看:
http://fiddlerbook.com/fiddler/help/hookup.asp#Q-DOTNET
对于一些建议,但我对 Xamarin.IOS 中 HttpClient 的实现知之甚少,无法知道它们是否合适。即我似乎无法按照以下建议使用 GlobalProxySelection:
GlobalProxySelection.Select = new WebProxy("127.0.0.1", 8888);
我不认为 app.config 建议使用:
<defaultProxy>
<proxy bypassonlocal="false" usesystemdefault="true" />
</defaultProxy>
适用于 Xamarin 应用程序。对我来说,一个好的起点是了解 HttpClient 与 WebRequest 所做的不同之处,以便追踪问题,但希望有人能告诉我我需要做什么来解决这个问题。
谢谢
F
注意:我没有使用本地地址,因此不会出现在其中。 注意:这可以通过在配置为使用 fiddler/charles 作为代理的 iOS 设备上运行 http://docs.xamarin.com/samples/HttpClient/ 并观察 HttpClient 流量没有出现来轻松测试。
【问题讨论】:
【参考方案1】:这是同一个问题,answer 也应该是相同的。 IOW 您需要设置代理或使用支持CFNetwork
的HttpClient
处理程序。
【讨论】:
感谢 poupou,如果您可以直接访问 HttpClient(我修改了 Xamarin 示例并且它工作得很好),那效果很好,但遗憾的是 Xamarin MobileServicesClient 类在后台创建它并且不公开它。因此,除非有另一种设置方式,否则这是行不通的。 请提交增强错误报告@bugzilla.xamarin.com,以便可以修复此问题(不确定最好的方法是什么,公开更多或更好的默认值 - 但组件团队会调查它)。 抱歉,Xamarin 组件团队允许这样做。有一个重载的构造函数,它采用通常的 applicationUrl、applicationKey 和一个 HttpClientHandler。一旦我按照您的其他答案进行设置并将其传递进去,一切正常。非常感谢,我会标记你的答案。以上是关于为啥使用 Xamarin 的 MobileServiceClient 单点触控实现的流量不显示在 Fidder/Charles 中的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Xamarin Forms 对所有页面使用一个 Activity
为啥我在 Xamarin 中使用 ContentProvider 插入项目后数据库为空?
为啥使用 Xamarin 的 MobileServiceClient 单点触控实现的流量不显示在 Fidder/Charles 中
为啥我更改的字符串没有出现在使用选项卡式表单 xamarin 的其他页面上