2009-10-23 5 views
3

Je développe une application Blackberry qui fait pas mal de travail en réseau, en utilisant HttpConnections et InputStreams. Je l'ai testé dans un environnement où il a accès à un BES, mais je vais le démonter avec seulement le sans fil.Problème lors de l'exécution de l'application Blackberry sans BES

Certains tests préliminaires sur un Bold 9000 montrent que même si le navigateur Web du téléphone peut se connecter à Internet, mon application ne le peut pas. Ma compréhension de cela est que le BES gère généralement la plupart de la logique de mise en réseau, et que le Blackberry lui-même n'est pas très bon dans ce domaine.

J'ai vu quelques références à devoir ajouter "; interface = wifi" aux URL auxquelles j'essaye de me connecter, mais quand je le fais, le téléchargement progressif d'un gros fichier vidéo se bloquera après quelques secondes.

Y a-t-il autre chose qui peut être fait pour faire fonctionner une application Blackberry avec le sans fil? Y a-t-il des cours dédiés que je pourrais utiliser pour gérer cela?

Modifier

Il ressemble à ce qui se passe est qu'il ya une chance rare de la mise en réseau tout simplement pas de travail - Exception générale Socket. Le problème est que pour les fichiers volumineux, je fais beaucoup de connexions, en morceaux de 256k, donc pour les fichiers volumineux, il y a plus de problèmes d'erreurs. Je ne sais vraiment pas comment gérer ça.

Modifier

Je l'ai utilisé un travail avec ma méthode Connector.open, en utilisant la version de .Open qui a une option de délai d'attente. Si un appel réseau particulier ne revient jamais, ce qui était mon problème, en plus des exceptions, il réessaye après quelques secondes. Il le fait aussi pour les exceptions. C'est, au mieux, une solution temporaire, et si quelqu'un connaît un moyen d'améliorer les performances réseau non BES, j'aimerais l'entendre.

Répondre

2

Une solution simple serait de vérifier l'état de couverture 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;   
} 

Cela permettrait d'assurer qu'une connexion est construit uniquement si l'appareil est connecté à un point d'accès.

Edit:

Deuxième chose que vous devriez vérifier est cette base de connaissances Entrée (HTTP 413 Request Entity Too Large)

Troisième plus: Avez-vous utilisé, deviceside = true dans votre chaîne de connexion? sans un backend MDS vous devez utiliser cette annexe pour assurer une connexion TCP/IP normale

+0

La vérification de la couverture Wi-Fi n'est pas pertinente pour mon application, car il s'agit d'un prototype destiné uniquement à être utilisé dans des conditions contrôlées. Je sais que j'ai un accès wifi, et que cet accès est insuffisant. Je suis au courant de l'erreur http 413 (c'est pourquoi je fais le téléchargement progressif en morceaux de moins que le maximum) Je n'ai pas utilisé; deviceside = true, car le site Web de développement a déclaré que cela ne s'appliquait pas à Wifi seulement les situations (dont notre démo sera). Je ne suis pas très familier avec les réseaux, TCP/IP est-il compatible avec le WiFi? La vidéo du tutoriel semblait clairement différencier les deux ... – Jenny

Questions connexes