2011-09-19 94 views
1

我使用下列方式HTTP連接:HTTP連接參數

  HttpConnection _httpConnection = null; 

     try { 
      _httpConnection = (HttpConnection)Connector.open(_url); 
     } catch(Exception e) { } 

     byte [] postDataBytes = _postData.getBytes(); 
     _httpConnection.setRequestMethod(HttpConnection.POST); 
     _httpConnection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0"); 
     _httpConnection.setRequestProperty("Content-Language", "en-US"); 
     _httpConnection.setRequestProperty("Content-Type","application/x-www-form-urlencoded"); 
     _httpConnection.setRequestProperty("Connection", "close"); 
     _httpConnection.setRequestProperty("Content-Length", Integer.toString(_postData.getBytes().length)); 

     os = _httpConnection.openOutputStream(); 
     os.write(postDataBytes); 
     os.flush(); 

此HTTP連接需要的參數,以成功地打開。例如,在WIFI網絡上,它需要將「; deviceside = true; interface = wifi」添加到URL中。

問題在於EDGE連接。每個國家都需要添加不同的參數。例如在黎巴嫩,它需要「; deviceside = false」,但在KSA中,如果我添加此參數,連接將無法打開。在美國它需要不同類型的參數。問題是如何爲具有相同參數的所有國家建立HTTP連接。這樣應用程序無論在哪裏下載,都能成功地連接到互聯網。

任何人都可以幫助解決這個問題嗎?在此先感謝

+0

你與交通混亂的鏈路層?例如,您可以通過EDGE或CDMA甚至WiFi獲得BES連接('deviceside = false')。但是,如果設備與BES環境關聯,則只能獲得BES連接。例如,大多數消費者設備不與BES相關聯,而是與BIS相關聯。 –

回答

4

歡迎來到黑莓網絡傳輸混亂的世界!您需要從文章Connecting your BlackBerry - http and socket connections to the world開始。

這裏是「只要給我一個連接」一個簡單的例子(注意,你將需要添加相應的錯誤處理;同時,myURL在下面的代碼應該有附加到它沒有連接描述信息):

ConnectionFactory factory = new ConnectionFactory(); 
ConnectionDescriptor descriptor = factory.getConnection(myURL); 
if (descriptor != null) { 
    _httpConnection = (HttpConnection) descriptor.getConnection(); 
    ... 
} 
+0

我花了幾天的時間閱讀這篇文章,沒有得出任何一般性結論......您是否發現過任何可能使這篇文章對我有用的東西? –

+0

您定位的操作系統版本是什麼?我發現OS5 +('ConnectionFactory'等)中的網絡API非常容易使用,而且更加靈活。 –

+0

我的目標是OS 5.0及以上版本。我看到了ConnectionFactory API,但不知道如何使用它!我嘗試了不同的例子,但未能成功。你能給我一些幫助嗎? –

0

嘗試使用用在這個環節melick-rajee.blogspot.com下文稱方法和使用它像

_url = "http://www.example.com"; 

_httpConnection = (HttpConnection)Connector.open(_url + getConnectionString()); 

你將不得不簽署申請使用此否則應用程序將顯示異常。 要簽署你的應用程序,只需到這裏Code Signing Keys

+0

無法通過EDGE進行連接!同樣的問題 –

0

要使用connectionFactory,似乎您需要設置BisBOptions

試試這個:

connFact = new ConnectionFactory(); 
    connFact.setTransportTypeOptions(TransportInfo.TRANSPORT_BIS_B, 
        new BisBOptions("mds-public"));