3

HttpConnections と InputStreams を使用して、かなりのネットワーキングを行う Blackberry アプリケーションを開発しています。BES にアクセスできる環境でテストしてきましたが、ワイヤレスのみでデモを行う予定です。

Bold 9000 でのいくつかの予備テストでは、電話の Web ブラウザーはインターネットに接続できますが、私のアプリケーションは接続できないことが示されています。私の理解では、BES は通常、ネットワーキングのロジックのほとんどを処理し、Blackberry 自体はそれが得意ではありません。

接続しようとしている URL に ";interface=wifi" を追加する必要があるという言及を見たことがありますが、これを行うと、大きなムービー ファイルを段階的にダウンロードすると、数秒後にハングします。

Blackberry アプリケーションをワイヤレスだけで動作させるために他にできることはありますか? これを処理できる署名付きクラスはありますか?

編集

何が起こっているかというと、ネットワークが機能しない可能性がまれにあるようです - General Socket Exception. 問題は、大きなファイルの場合、256k のチャンクで多くの接続を行っているため、大きなファイルの場合、最終的にエラーが発生するという問題がさらに大きくなることです。これを処理する方法が本当にわかりません。

編集

タイムアウト オプションを持つ .open のバージョンを使用して、Connector.open メソッドで回避策を使用しました。例外に加えて、特定のネットワーク呼び出しが返されない場合 (これは私の問題でした)、数秒後に再試行します。例外に対してもこれを行います。これはせいぜい一時的な修正であり、BES 以外のネットワークのパフォーマンスを改善する方法を知っている人がいれば、ぜひ教えてください。

4

1 に答える 1

2

簡単な解決策は、WiFi カバレッジ ステータスを確認することです。

public boolean GetWiFiCoverageStatus()  {
    if((WLANInfo.getWLANState() == WLANInfo.WLAN_STATE_CONNECTED) &&
              RadioInfo.areWAFsSupported(RadioInfo.WAF_WLAN)) {
              // this.connectionString += ";interface=wifi";
              return true;
    } else return false;           
}

これにより、デバイスがアクセス ポイントに接続されている場合にのみ接続が確立されます。

編集:

2 番目に確認する必要があるのは、このナレッジ ベース エントリ(HTTP 413 Request Entity Too Large) です。

3 番目の追加: 接続文字列で ;deviceside=true を使用しましたか? MDS バックエンドがない場合は、この付録を使用して通常の TCP/IP 接続を確保する必要があります

于 2009-10-26T11:44:10.293 に答える