1

Web サービスからデータを取得するモバイル アプリケーションの作業で忙しくしています。もちろん、すべてが完璧に機能しており、必要なものはすべて揃っており、あまり労力をかけずにサービスを利用できます...エミュレーターで。

しかし、このアプリケーションをデバイス上でテストすると、期待しているデータではなく、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));

注: 私は実際に Google を呼び出しているわけではありません。これは単なる例です。とにかく、JSONが返されることを期待していますが、代わりにサービスプロバイダーからモバイルオプションを変更するようにというメッセージが届いています...これを分離ストレージに入れてブラウザでレンダリングできますが、ソースがわかりませんボタンをクリックすると、フォームは相対 URL を使用するため、意図したことを実行する代わりに、何を呼び出そうとしているかを確認するだけです。

とにかく応答のソースを取得する方法はありますか? http://vodafonelive.mobi/などのソースを探しています。誰かが私に何をすべきかを教えてくれれば、私はそれを大いに感謝します.私の現在の考えでは、ソースを特定できれば、アプリケーションがこれを処理する必要がないようにWebブラウザタスクを作成できるということですが...応答がどこから来ているのかを特定する方法がわかりません。

どんな助けでも大歓迎です。

4

2 に答える 2

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 に答える
0

これは、エミュレーターとデバイスのユーザー エージェントの違いが原因である可能性が最も高いです。送信内容を確認するか、これを明示的に設定して、2 つが同じように動作するようにします。サーバーが別の場所にリダイレクトしようとしないようにするため。

あるいは、携帯電話会社のプロキシが「役に立ち」、ネットワークを経由するリクエストを調整している可能性もあります。

于 2012-05-21T16:23:18.277 に答える