1

我正忙于开发从 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 任务,这样我的应用程序就不需要处理这个,但是......因为我在打电话一个特定的来源我不知道如何确定响应的来源。

任何帮助表示赞赏。

4

2 回答 2

0

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

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

于 2012-05-21T16:23:18.277 回答
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;

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

于 2012-05-22T08:43:37.220 回答