2012-05-21 52 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以相同的方式運行。確保服務器不嘗試並重定向到其他位置。

或者,它可能是一個移動運營商代理「有用」,並調整通過其網絡的請求。