2009-07-14 49 views
1

我創建了一個J2ME程序,並把它移植到黑莓Bold。隧道黑莓大膽失敗。爲什麼?

程序做一些HTTP查詢。 每隔一段時間都會失敗,但有一個例外:'隧道失敗'

我的APN設置是正確的(因爲它有時確實有效)。

我連「;deviceside=true」附加到URL

我注意到,當瀏覽器剛剛被激活,程序總是工作。 但是,當瀏覽器在幾分鐘內沒有激活並且我啓動程序時,我會收到隧道失敗的錯誤。

回答

1

作爲一個測試,你可能想嘗試加入的網址本身的APN設置,看看是否有幫助。我假設你有很好的信號強度?

+0

是信號強度是很大的。我會嘗試如果url中的apnsettings有幫助。雖然課程的最終解決方案,這是極不可取的; ^) – Toad 2009-07-17 09:31:03

+0

這可能是不可取,但如果你發佈你的應用程序到公衆,你將不得不這樣做的。雖然有些運營商可能會在工廠配置較新的設備,如帶有APN的Bold,但不能保證設置。像Curve和Pearl這樣的老設備幾乎從未設置過。 – 2009-07-20 20:58:18

1

一樣傻,因爲這聽起來即使你只從連接讀取,確保打開你打開它爲已讀接頭時/寫

String url = "http://www.google.com"; 
HttpConnection connection = (HttpConnection)Connector.open(url, Connector.READ_WRITE, true); 
+0

是的!我已經在我的代碼中有這個了。我在某處讀到POST可以處理一些隧道失敗的錯誤和GET不。這似乎是所有情況下用READ_WRITE解決的技巧。 – Toad 2009-07-17 09:32:45

2

與一些黑莓手機的問題是,所有其他網絡連接失敗。所以當你收到異常時,你將不得不再次嘗試。所以,你的連接代碼應該是這樣的

int numAttempts = 0; 
boolean hasConnectedSuccessfully = false; 
while(numAttempts < 2 && !hasConnectedSuccessfully) 
{ 
    try 
    { 
    // do the http connection 
     hasConnectedSuccessfully = true; 
    } 
    catch(Exception e) 
    { 
     hasConnectedSuccessfully = false; 
    } 
    finally 
    { 
    //close the connections 
    } 
    numAttempts++; 
} 

希望這應該解決您的問題