Blackberry应用程序在模拟器中工作,但在设备中不工作

Blackberry应用程序在模拟器中工作,但在设备中不工作,blackberry,httpconnection,Blackberry,Httpconnection,我在这个网站上读到了一些类似的帖子,这些帖子处理的似乎是同一个问题,而这些回复似乎并没有真正为我澄清问题 我的应用程序在模拟器中运行良好。我相信我使用的是带OS4.6的Bold 9000。应用程序已签名 我的应用程序通过3G进行HTTP调用以获取XML结果。类型是application/xhtml+xml。 在设备中,它没有给出错误。它没有明显的错误迹象。我让try-catch将结果打印到屏幕上,但什么也没有得到。 HttpConnection已从演示中删除,在sim卡中运行良好 因为它没有错误

我在这个网站上读到了一些类似的帖子,这些帖子处理的似乎是同一个问题,而这些回复似乎并没有真正为我澄清问题

我的应用程序在模拟器中运行良好。我相信我使用的是带OS4.6的Bold 9000。应用程序已签名

我的应用程序通过3G进行HTTP调用以获取XML结果。类型是application/xhtml+xml。 在设备中,它没有给出错误。它没有明显的错误迹象。我让try-catch将结果打印到屏幕上,但什么也没有得到。 HttpConnection已从演示中删除,在sim卡中运行良好

因为它没有错误,我开始回想我在项目开始时读到的东西。deviceside=true?像这样的? 我的请求只是HttpConnection=(HttpConnection)Connector.open(url); 其中url只是一个标准url,没有get变量。 根据我在屏幕角落看到连接箭头的时间长度,我假设应用程序正在启动与我的服务器的初始通信,然后要么得到一个坏结果,要么得到了结果,并且持久存储未按预期运行

我不知道从哪里开始。发布代码将是荒谬的,因为它将基本上是我的整个应用程序

我想我的问题是,是否有人知道设备和模拟器有什么主要区别,可能会导致http连接或持久存储失败? 构建设置?操作系统限制?在开始设备测试之前,我可能不知道每个人都应该做什么标准程序


谢谢

仅仅提供URL是行不通的。您必须在URL之后附加一些信息,以确定HTTP连接将使用的传输方法。例如,将使用DirectTCP(您可能还必须提供APN信息,但这些信息已保存在设备上供我的手机使用)。将使用wi-fi。在操作系统5上,有一个ConnectionFactory类使这一过程变得容易得多。这就更详细了。

仅仅提供URL是行不通的。您必须在URL之后附加一些信息,以确定HTTP连接将使用的传输方法。例如,将使用DirectTCP(您可能还必须提供APN信息,但这些信息已保存在设备上供我的手机使用)。将使用wi-fi。在操作系统5上,有一个ConnectionFactory类使这一过程变得容易得多。这将更加详细。

这可能是由于未指定APN的问题。有关详细信息,请参见我对该问题的回答:

可能是APN未指定的问题。有关详细信息,请参见我对该问题的回答:

我想对此发表评论,但我想我还没有足够的代表权。。。所以我只想回答,希望这不会因为只是粘贴了一些链接而被淹没

在过去的一周里,我一直在我们的应用程序上研究这类网络问题,正如其他人所指出的,这确实很棘手。这里有两个链接,它们确实帮助我们在不同的设备上使用HTTP,尤其是不提供ConnectionFactory的旧设备


第一个有一些代码示例,包括查询系统的ServiceBook和CoverageInfo类的演示,以决定什么样的连接将起作用。

我想对此发表评论,但我想我还没有足够的代表来回答这个问题。。。所以我只想回答,希望这不会因为只是粘贴了一些链接而被淹没

在过去的一周里,我一直在我们的应用程序上研究这类网络问题,正如其他人所指出的,这确实很棘手。这里有两个链接,它们确实帮助我们在不同的设备上使用HTTP,尤其是不提供ConnectionFactory的旧设备


第一个有一些代码示例,包括查询系统的ServiceBook和CoverageInfo类以决定哪种连接可以工作的演示。

这对我来说是一个难题! 正如Jonathan所说,您必须在url中添加一些参数,以使其在设备上工作。您不应该手工操作,而应该使用ConnectionFactory

正如你可能会想到的,这只会让它工作,但它没有

真正的问题不是url被改变了,而是因为它被改变了;接口=wifi;deviceside=true(在我的情况下)。根据Web服务器是否接受您的请求,这可能会破坏代码

我尝试过的一个有效的解决方案是尝试出现一个伪参数,比如

&foo=true -> &foo=true;deviceside=true
这将作为Web服务器的标准参数,但您的设备将使用它驱动您的连接

在模拟器上,这项工作不需要额外的代码,因为它后面有一个BIS服务器供您使用。在设备上(就像我的情况一样)没有,因为我使用的是未注册且没有SIM卡的开发设备(只有wifi)


另一点是,HttpConnection类不处理HTTP 302重定向,如果您得到一个重定向,您必须手动处理它。

这对我来说是一个难题! 正如Jonathan所说,您必须在url中添加一些参数,以使其在设备上工作。您不应该手工操作,而应该使用ConnectionFactory

正如你可能会想到的,这只会让它工作,但它没有

真正的问题不是url被改变了,而是因为它被改变了;接口=wifi;deviceside=true(在我的情况下)。根据Web服务器是否接受您的请求,这可能会破坏代码

我尝试过的一个有效的解决方案是尝试出现一个伪参数,比如

&foo=true -> &foo=true;deviceside=true
这将作为Web服务器的标准参数,但您的设备将使用它驱动您的连接

在模拟器上,这项工作不需要额外的代码,因为它后面有一个BIS服务器供您使用。在设备上(就像我的情况一样)没有,因为我使用的是未注册且没有SIM卡的开发设备(只有wifi)

另一点是t