0

このサイトで、同じ問題と思われるものを扱っている同様の投稿をいくつか読みましたが、回答は私にとって物事を明確にしているようには見えませんでした.

私のアプリケーションはシミュレーターで正常に動作します。OS 4.6 で Bold 9000 を使用していると思います。アプリは署名されています。

私のアプリは、3G 経由で HTTP 呼び出しを行い、XML の結果をフェッチします。タイプは application/xhtml+xml です。デバイスでは、エラーは発生しません。エラーの視覚的な兆候はありません。結果を画面に出力するように try catch に指示しましたが、何も得られません。HttpConnection はデモから取り出したもので、sim で問題なく動作します。

エラーが出ないので、プロジェクトが始まったときに思い出したことを振り返り始めます。デバイス側=true? そんな感じ?私のリクエストは単に HttpConnection connection = (HttpConnection)Connector.open(url); です。ここで、url は単なる標準の URL であり、get 変数はありません。画面の隅に接続矢印が表示される時間の長さに基づいて、アプリがサーバーへの最初の通信を開始してから、悪い結果が得られるか、結果が得られて永続ストアが機能していないと推測します期待される。

どこから始めればよいかわかりません。基本的に私のアプリ全体になるので、コードを投稿するのはばかげています。

私の質問は、http 接続や永続ストアなどの障害を引き起こす可能性のあるデバイスとシミュレーターの大きな違いを誰かが知っているかどうかだと思いますか? ビルド設定?OSの制限?デバイスのテストを開始する前に誰もが行う必要がある、私が知らなかった標準的な手順はありますか?

ありがとう

4

4 に答える 4

3

URL を指定するだけでは機能しません。HTTP 接続で使用する転送方法を決定するには、URL の後にいくつかの情報を追加する必要があります。たとえば、http://example.com;deviceside=trueは DirectTCP を使用します (APN 情報も提供する必要があるかもしれませんが、それは私の電話のデバイスに保存されます)。 http://example.com;interface=wifiは Wi-Fi を使用します。OS 5 には、これをより簡単にする ConnectionFactory クラスがあります。 詳細については、こちらのリンクを参照してください。

于 2010-06-09T12:08:40.440 に答える
1

これは私にとって大変でした!Jonathanが言ったように、デバイスで機能させるには、URLにいくつかのパラメーターを入れる必要があります。手作業で行うのではなく、代わりにConnectionFactoryを使用してください。

あなたが思うかもしれませんが、これはそれを機能させるだけですが、そうではありません!

本当の問題は、 URLに; interface = wifi; deviceside = trueが含まれているため(私の場合) 、 URLが変更されていないことです。リクエストを受け入れるウェブサーバーによっては、これによりコードが破損する可能性があります。

私が試した解決策は、次のような偽のパラメータを発生させようとすることです。

&foo=true -> &foo=true;deviceside=true

これはWebサーバーの標準パラメーターになりますが、デバイスはこれを使用して接続を駆動します。

シミュレーターでは、背後にBISサーバーがあるため、この余分なコードなしで動作します。デバイスでは(私の場合のように)、未登録でSIMなしの開発デバイス(wifiのみ)を使用しているため、ありません。

もう1つのポイントは、HttpConnectionクラスはHTTP 302リダイレクトを処理しないため、取得した場合は手動で処理する必要があるということです。

于 2010-07-23T14:17:51.323 に答える
0

APN が指定されていないことが原因である可能性があります。詳細については、この質問に対する私の回答を参照してください: ブラックベリーで http を介したビデオ ストリーミング

于 2010-06-10T00:07:40.010 に答える
0

私はこれをコメントにしますが、まだ十分な担当者がいないと思います...だから私はただ答えて、いくつかのリンクを貼り付けるだけでこれが嫌われないことを願っています.

私は先週、私たちのアプリでまさにこの種のネットワークの問題に取り組んできましたが、他の人が指摘しているように、これは確かに厄介です. これは、さまざまなデバイス、特に ConnectionFactory を提供しない古いデバイスで HTTP を使用するのに本当に役立った 2 つのリンクです。

http://supportforums.blackberry.com/t5/Java-Development/Connecting-your-BlackBerry-http-and-socket-connections-to-the/td-p/206242

最初の例には、システムの ServiceBook クラスと CoverageInfo クラスをクエリして、どのような種類の接続が機能するかを決定するデモなど、いくつかのコード例があります。

于 2010-06-11T17:56:09.997 に答える