我創建了一個J2ME程序,並把它移植到黑莓Bold。隧道黑莓大膽失敗。爲什麼?
程序做一些HTTP查詢。 每隔一段時間都會失敗,但有一個例外:'隧道失敗'
我的APN設置是正確的(因爲它有時確實有效)。
我連「;deviceside=true
」附加到URL
我注意到,當瀏覽器剛剛被激活,程序總是工作。 但是,當瀏覽器在幾分鐘內沒有激活並且我啓動程序時,我會收到隧道失敗的錯誤。
我創建了一個J2ME程序,並把它移植到黑莓Bold。隧道黑莓大膽失敗。爲什麼?
程序做一些HTTP查詢。 每隔一段時間都會失敗,但有一個例外:'隧道失敗'
我的APN設置是正確的(因爲它有時確實有效)。
我連「;deviceside=true
」附加到URL
我注意到,當瀏覽器剛剛被激活,程序總是工作。 但是,當瀏覽器在幾分鐘內沒有激活並且我啓動程序時,我會收到隧道失敗的錯誤。
作爲一個測試,你可能想嘗試加入的網址本身的APN設置,看看是否有幫助。我假設你有很好的信號強度?
一樣傻,因爲這聽起來即使你只從連接讀取,確保打開你打開它爲已讀接頭時/寫
String url = "http://www.google.com";
HttpConnection connection = (HttpConnection)Connector.open(url, Connector.READ_WRITE, true);
是的!我已經在我的代碼中有這個了。我在某處讀到POST可以處理一些隧道失敗的錯誤和GET不。這似乎是所有情況下用READ_WRITE解決的技巧。 – Toad 2009-07-17 09:32:45
與一些黑莓手機的問題是,所有其他網絡連接失敗。所以當你收到異常時,你將不得不再次嘗試。所以,你的連接代碼應該是這樣的
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++;
}
希望這應該解決您的問題
是信號強度是很大的。我會嘗試如果url中的apnsettings有幫助。雖然課程的最終解決方案,這是極不可取的; ^) – Toad 2009-07-17 09:31:03
這可能是不可取,但如果你發佈你的應用程序到公衆,你將不得不這樣做的。雖然有些運營商可能會在工廠配置較新的設備,如帶有APN的Bold,但不能保證設置。像Curve和Pearl這樣的老設備幾乎從未設置過。 – 2009-07-20 20:58:18