拦截 Web 服务请求的 HTML 消息或登录页面
本文关键字:登录 消息 HTML Web 服务 请求 拦截 | 更新日期: 2023-09-27 18:34:53
我正忙于开发一个从 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/或类似的东西这样的来源。如果有人可以告诉我该怎么做,我将不胜感激,我目前的想法是,如果我能确定来源,我可以创建一个 Web 浏览器任务,这样我的应用程序就不需要处理这个问题,但是......由于我正在呼叫特定来源,我不知道如何确定响应来自何处。
任何帮助,不胜感激。
这很可能是由于模拟器和设备的用户代理存在差异。检查发送的内容或显式设置以确保 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;
感谢您的帮助,希望这将帮助遇到类似问题的人。