6

MonoDroid で Webrequests を使用してランダムにタイムアウトを取得するのに多くの問題があります。私のコードは正常に動作しますが、すべてのリクエストがタイムアウトして動作しないことがあります。

リクエストで使用されている Web サービスに問題がないことを確認しました。

以下は、MonoDroid を使用して Web サービスからデータを要求するために使用できるコードの例です。

bool bolOk = false;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create ("http://www.website.com/service/");
request.Timeout = 20000;
request.Credentials = gv_objCredentials;

using (HttpWebResponse response = (HttpWebResponse)request.GetResponse ()) {
    bolOk = response.StatusCode == HttpStatusCode.OK;
}

ご覧のとおり、基本的なものです。上記のようなコードは、ThreadPool.QueueUserWorkItem または TaskFactory を使用して UI への別のスレッドで常に使用します。

私が気付いたのは、リクエストがアプリからタイムアウトし始め、それをコンピューターに接続すると、MonoDevelop からアプリをデバッグすると、リクエストがタイムアウトせずに機能することです。これが何かを意味するかどうかはわかりません。これは、電話と同じネットワーク上のブラウザーを使用して、自分のコンピューターから Web サービスをテストすることに似ています。Web サービスは常に問題なく動作します。

MonoDroid から Web リクエストを作成する最良の方法は何ですか?

Web サービスが正しく動作している場合、リクエストが常に成功し、タイムアウトしないようにするにはどうすればよいですか?

4

2 に答える 2

2

Xamarin4.2.6および4.2.8で問題が発生しました。

Xamarinのサポートのおかげで、彼らは問題を特定し、プロジェクトのプロパティでarmeabiではなくarmeabi-v7aにビルドをターゲットにすることを提案しました(ここで説明するマルチコアプロセッサの問題)

マルチコアプロセッサをサポートする予定があるかどうかによっては、この投稿を確認する必要があり、.csprojファイルを手動で編集する必要がある場合があります。

于 2012-10-24T12:57:13.967 に答える
1

Android用のMonoの新しいバージョン(4.2.5)があり、WebRequestとwebRequestStreamの多くのバグが修正されています。ここでリリースノートを確認できます:http://docs.xamarin.com/android/Releases/Mono_For_Android_4/Mono_for_Android_4.2.5

最新のビットをダウンロードして、機能するかどうかを確認することをお勧めします。そうでない場合は、バグを報告してください。バグは次のバージョンの製品で確実に修正されます。

于 2012-09-07T15:21:39.703 に答える