2014-03-05 67 views
0

彻底搜索后,我终于决定发布我的问题,这真的让我做恶梦。无法通过APN连接到TCP服务器

在我的应用我试图连接到使用网络运营商的互联网TCP服务器,并使用下面的连接字符串:

URL =“插座://” + IP +“:” +端口+“;装置侧=真; connectionTimeout = 30000; APN =; tunnelauthusername =; tunnelauthpassword =;“;

我能够通过手机的浏览器连接到互联网,但无法通过应用程序连接到TCP服务器。

在我的设备默认情况下禁用APN身份验证,并且APN,Userid/Password字段为空,这就是为什么我将这些参数作为连接字符串中的空白值。

当我尝试使用下面的字符串通过wifi网络连接:

url="socket://"+ip+":"+port+";deviceside=true;interface=wifi;connectionTimeout=30000"; 

我能够连接到服务器,但不是通过APN的情况。

请帮我一把。

我只是卡在这里,找不到出路。

谢谢

回答

1

有多种连接到服务器的方法。你正在做的是指定在你设置的连接后缀中使用的方法。您可以在连接后缀使用的选项都记录在这里的BB知识库文章中:

Different-ways-to-make-an-HTTP-or-socket-connection

如果要支持真正的旧手机(预OS 5.0),那么这就是你唯一的选择。但与此诀窍是,你必须找出什么连接方法将在你的设备上工作,当你提出请求。在互联网上有大量的代码可以做到这一点,其中大部分是可疑的。

如果您的操作系统是5.0或更高版本,那么您可以使用更高级的API(即ConnectionFactory)来简化操作,并在OS 6.0中实现更高级的功能。这些都记录在BB的Java微型,在这里看到:

BB OS Networking

您正在使用的选项是GCF框架。如果您仅支持OS 5.0及更高版本,我建议您调查“网络API”。您也可以调查“传统操作系统的网络API备选方案”。

这并不回答这个问题,“浏览器如何连接,我不能在我的应用程序?”。这是因为浏览器使用了称为BIS-B的特殊BlackBerry连接方法。关于BIS-B的好处是它可以用于任何拥有黑莓资费的BB电话,并且无需配置。不好的一面是你没有正确的访问它。要访问它,最简单的方法就是要求Push支持,即使您不打算立即使用它,但可能在将来使用它。这在上面的页面中有记录。

但回到你的问题。您的TCP配置中的APN值未设置,并不意味着您不必设置它们。如果某人将“; deviceside = true”作为连接字符串编码,则Options中指定的值将用作默认值 - 用户可以自行设置这些值并且应用程序开发人员不编码任何内容。这些值是特定于您的运营商的。因此,搜索以找出您需要使用的值。您可以将这些值放入TCP选项中(因此不要将它们编码到连接后缀中),或放入连接后缀中。如果你不能找出你应该放在那里,你需要问你的运营商。

在大多数黑莓资费上,通过APN使用直接TCP可能会使用户花费某些数据,并且还需要配置。或者,您可以使用WAP 2,这也可能会花费数据,但不需要任何配置。这两者的优点是,他们将在未使用黑莓资费的手机上工作。

我的建议是查看使用ConnectionFactory(网络API)的连接,但这只适用于OS 5.0及更高版本。

+0

感谢彼得..我尝试了与ConectionFactory(网络API),它终于工作... – Jits

相关问题