0

彻底谷歌搜索后,我终于决定发布我的问题,这真的让我做噩梦。

在我的应用程序中,我尝试使用网络运营商 Internet 并使用以下连接字符串连接到 TCP 服务器:

url="socket://"+ip+":"+port+";deviceside=true;connectionTimeout=30000;apn=;tunnelauthusername=;tunnelauthpassword=;";

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

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

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

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

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

请帮帮我。

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

谢谢

4

1 回答 1

1

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

建立 HTTP 或套接字连接的不同方式

如果您支持真正的旧手机(OS 5.0 之前),那么这是您唯一的选择。但这样做的诀窍是,在您提出请求时,您必须弄清楚您的设备将使用哪种连接方法。互联网上有大量代码可以做到这一点,其中大部分都是可疑的。

如果您是 OS 5.0 或更高版本,那么您可以使用更高级的 API ConnectionFactory 来简化此操作,并在 OS 6.0 中使用更高级的功能。这些都记录在 BB Java 微型网站上,请参见此处:

BB OS 网络

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

这并不能回答常见的问题,“为什么浏览器可以连接而我的应用程序不能连接?”。这是因为浏览器使用称为 BIS-B 的特殊 BlackBerry 连接方法。BIS-B 的好处是它适用于任何有黑莓资费的 BB 手机,并且不需要配置。坏事是您无法正常访问它。要访问它,最简单的方法是请求 Push 支持,即使您不打算立即使用它但将来可能会使用它。这记录在上面的页面上。

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

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

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

于 2014-03-05T12:27:14.557 回答