2009-09-02 199 views
2

所以,我使用HTTPConnection類,像這樣:黑莓JDE的HttpConnection問題

HttpConnection c = 
    (HttpConnection)Connector.open("http://147.117.66.165:8000/eggs.3gp"); 

繼什麼樣子做的事情黑莓JDE API以正確的方式。

然而,我的代碼崩潰,如果我嘗試做只是用變量「c」的東西。

.getType() 
.getInputStream() 
.getStatus() 

所有導致崩潰。

我可以,但是從它那裏得到的URL,我可以看看變量「C」本身就知道,它沒有,事實上,獲得創建。

難道我設法創造一個斷開的連接?我是否需要做其他事情來實際完成連接?在什麼情況下會發生這種情況(我知道鏈接很好,我可以使用黑莓的瀏覽器訪問它)。

我只是使用HttpConnection的錯嗎?我如何正確地做事?

回答

1

我想通了,什麼是錯誤的發現,使用HttpConnection的一些示例代碼,(至少,我想我做到了,至少,我可以訪問所有這些變量,現在)。之前,我並沒有把它當作「流連接」(我看到的例子中它已經從連接器轉換爲HTTPConnection)。

StreamConnection s = null; 
s = (StreamConnection)Connector.open("http://10.252.9.15/eggs.3gp"); 
HttpConnection c = (HttpConnection)s;       
InputStream i = c.openInputStream(); 
System.out.println("~~~~~I have a connection?~~~~~~" + c); 
System.out.println("~~~~~I have a URL?~~~~" + c.getURL()); 
System.out.println("~~~~~I have a type?~~~~" + c.getType()); 
System.out.println("~~~~~I have a status?~~~~~~" + c.getResponseCode()); 
System.out.println("~~~~~I have a stream?~~~~~~" + i); 
player = Manager.createPlayer(i, c.getType()); 

即使現在流成功創建,我仍然有問題使用它,但這可能是因爲我的連接速度太慢。

+1

我不認爲這個投射是在做什麼 - 你甚至不使用「s」變量,因此你可能會投射到HttpConnection並存儲在「c」中。可能還有其他事情正在發生。如果你能給我們提供關於拋出異常的更多信息,那肯定會有所幫助。 – 2009-09-03 17:21:19

+0

之前,我得到了「JUM錯誤104:未捕獲的NullPointer異常」,但添加了投射完全擺脫它。我的代碼聲稱一個流正在成功創建,但它不會播放流。從調試信息中可以看出它正在播放,但我什麼都看不到。 – Jenny 2009-09-08 12:28:41

1

HttpConnection的API文檔建議第一個電話應該是c.getResponseCode(),嘗試。

1

什麼錯誤它扔當它崩潰?你可能想嘗試添加「Connector.READ_WRITE」作爲第二個參數給你的公開徵集 - 哪怕它只是一個「只讀」像一個GET方面,一些操作系統,如4.6將throw an exception除非你是在讀/寫打開模式。

+0

真的嗎?我想我正在使用4.6,但我現在沒有看到任何異常... *思考*爲什麼它甚至會讓您以一種無法使用的方式打開它? – Jenny 2009-09-03 15:20:14

-1

你會發現你在我的博客文章需要的一切「An HttpRequest and HttpResponse library for BB OS5+

而對於調用應用程序中的媒體,你可以做任何一個瀏覽器invokation或直接從應用程序。你可能會最好使用像這樣的瀏覽器:

BrowserSession invokeHighQuality = Browser.getDefaultSession(); 
invokeHighQuality.displayPage("URL goes here"); 

或者你可以試試這個:

// CHAPI invocation 
      Invocation invoke = new Invocation(_data.getUrl(), null, BlackBerryContentHandler.ID_MEDIA_CONTENT_HANDLER, false, 
        null); 
      try { 
       Registry.getRegistry(YourAppClass.class.getName()).invoke(invoke); 
      } catch (Throwable t) { 

      } 
+0

好奇爲什麼這是downvoted ... – DFTR 2012-04-12 16:13:39