C# 拦截web服务请求的HTML消息或登录页

C# 拦截web服务请求的HTML消息或登录页,c#,windows-phone-7,response,webclient,C#,Windows Phone 7,Response,Webclient,我正忙于开发一个从web服务检索数据的移动应用程序。 当然,一切都很完美,我得到了我所需要的一切,我可以不费吹灰之力地使用这些服务。。。在模拟器上 然而,当我开始在设备上测试这个应用程序时,我得到的不是我期望的数据,而是一个返回的网站。我该怎么处理这件事 目前,我正在使用这个来调用我的服务:使用system.net-我不知道这是否是我应该在windows phone 7上使用的 WebClient proxy = new WebClient(); string strURI = "http://

我正忙于开发一个从web服务检索数据的移动应用程序。 当然,一切都很完美,我得到了我所需要的一切,我可以不费吹灰之力地使用这些服务。。。在模拟器上

然而,当我开始在设备上测试这个应用程序时,我得到的不是我期望的数据,而是一个返回的网站。我该怎么处理这件事

目前,我正在使用这个来调用我的服务:使用system.net-我不知道这是否是我应该在windows phone 7上使用的

WebClient proxy = new WebClient();
string strURI = "http://www.google.co.za";
proxy.OpenReadCompleted +=
        new OpenReadCompletedEventHandler(proxy_openreadcompleted);
proxy.OpenReadAsync(new Uri(strURI));
请注意:我不是真的给谷歌打电话,它只是一个例子。所以无论如何,我希望我的JSON会被返回,相反,我从服务提供商那里收到一条消息,要求更改移动选项。。。我可以把它放在独立的存储中,用浏览器呈现,但是我不知道消息的来源,所以当你点击一个按钮时,表单使用相对的URL,所以它不做它想做的事情,我只看到它试图调用什么

是否仍然可以获取响应的来源?我正在寻找这样或类似的来源。如果有人能告诉我该怎么做,我将不胜感激,我目前的想法是,如果我能确定源代码,我可以创建一个webbrowser任务,这样我的应用程序就不需要处理这个问题,但是。。。因为我正在呼叫一个特定的来源,所以我不知道如何确定响应来自何处


非常感谢您的帮助。

这很可能是因为模拟器和设备的用户代理不同。检查发送的内容或明确设置,以确保2的行为方式相同。以确保服务器不会尝试重定向到其他位置


或者,它可能是一个移动运营商代理,有助于调整通过其网络发送的请求。

好的,在花了一些时间之后,我终于找到了一种方法,可以通过使用另一种方法调用服务来获取响应uri,其中响应来自:

所以基本上这就是号召:

WebRequest request = HttpWebRequest.Create(strURI);
var result = (IAsyncResult)request.BeginGetResponse(ResponseCallback, request);
在函数ResponseCallBack函数中,我做了如下操作:

WebRequest request = (HttpWebRequest)result.AsyncState;
WebResponse response = request.EndGetResponse(result);
这样,我就可以检查截获消息的源响应uri,并让本机浏览器处理我不期望的html

WebBrowserTask webBrowserTask = new WebBrowserTask();
webBrowserTask.Uri = response.ResponseUri;

不过,感谢您的帮助,希望这能对有类似问题的人有所帮助。

iPhone的做法是弹出一个HTML浏览器,用户必须登录或点击浏览器,然后在收到预期的web服务响应时再次隐藏它。如果在Windows Phone上也没有一个简单的方法来实现这一点,我会感到惊讶。