2012-05-21 53 views
1

我正忙于从移动应用程序检索Web服务中的数据。当然,一切都很完美,我得到了我需要的一切,我可以在模拟器上毫不费力地使用服务。HTML消息或登录页面拦截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,所以而不是它做它意图做的事情,我只是看到它试图调用什么。

有无论如何获得响应的来源?我正在寻找像http://vodafonelive.mobi/或类似的东西的来源。如果有人能告诉我该怎么做,我会非常感激,我目前的想法是,如果我能确定源,我可以创建一个webbrowser任务,以便我的应用程序不需要处理这个,但是...因为我打电话一个具体的来源我不知道如何确定响应来自哪里。

任何帮助表示赞赏。

+0

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

回答

0

好了,所以花了一些时间在这之后,我终于找到了一种方法,我可以通过其他方法做调用服务中获得的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; 

感谢您的帮助,但希望这可以帮助有类似问题的人。

0

这很可能是由于仿真器和设备的用户代理的差异。检查明确发送或设置的内容,以确保2以相同的方式运行。确保服务器不尝试并重定向到其他位置。

或者,它可能是一个移动运营商代理“有用”,并调整通过其网络的请求。