2009-09-02 127 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