【问题标题】:Http connection error on the blackberry real device黑莓真机上的Http连接错误
【发布时间】:2011-03-25 11:44:51
【问题描述】:

我正在尝试构建一个用于测试目的的简单应用程序,其中我正在建立一个简单的 Http 连接。代码在模拟器上完美运行,但是当我在真实设备上测试应用程序时,它没有返回任何响应代码.我认为http连接有一些错误。

这是我用于 http 连接的代码:

httpConnection = (HttpConnection)Connector.open("http://www.google.com"); 

我使用的设备是 Blackberry 8520 v5.0.0.592

还给我一些关于如何使用 eclipse 插件从真实设备调试任何应用程序的提示。

提前致谢。

【问题讨论】:

  • 首先要检查的是:设备是否激活了 BlackBerry Data Plan?如果不能确保 APN 配置正确,请尝试将 ;deviceSide=true 附加到 URL:“google.com;deviceSide=true
  • 是的,设备有 BB 数据计划。我尝试使用 deviceSide=true ,也启用了 APN 设置,将用户名和密码留空。但它对我不起作用。
  • 您是如何指定 APN 设置的?你有什么运营商?
  • 另外,您需要支持哪些 BlackBerry OS 版本?如果只有 5.0 和更新版本,您应该改用新的 Network API。

标签: blackberry blackberry-simulator blackberry-eclipse-plugin


【解决方案1】:

如果您的程序在 OS 5.0+ 上运行就足够了,请尝试使用Network API

ConnectionFactory f = new ConnectionFactory();
ConnectionDescriptor descr = f.getConnection("http://www.google.com");

HttpConnection connection = (HttpConnection) descr.getConnection();

那段代码尝试使用第一个可用的连接类型。您可以根据需要对其进行微调。

关于调试,只需安装 BlackBerry Desktop Software,用 USB 电缆连接您的 8520,然后在 eclipse 中单击 Run -> Debug As... -> BlackBerry Device。

【讨论】:

  • 我已经尝试过了,但我在模拟器和真实设备上都得到了响应代码 302 .....你对此有任何想法......!!!跨度>
  • HTTP 响应代码 302 表示您要查找的资源位于不同的 URI 中,该 URI 应在 Location 标头中提供:w3.org/Protocols/rfc2616/rfc2616-sec10.html
  • 你能告诉我如何解决这个问题(响应代码302)......如果可能的话,请提供任何源代码......
  • 嗯,这就是 www.google.com 应该做的(回复 302),所以我在这里看不到问题。也许你应该澄清你的问题,你到底想用google.com做什么?
  • google.com 只是为了测试目的,现在当我用正确的 url 替换它时,它的 响应代码是 503 仅在真实设备上。您能否建议我如何在真实设备上获得响应代码 200
【解决方案2】:

连接工厂在新设备上运行良好,但不适用于曲线和粗体等一​​些旧设备。这就是为我解决的问题:

BrowserField browserField = new BrowserField();
BrowserFieldRequest Req = new BrowserFieldRequest("http://www.yourserver.com/");

InputStream inputStream = browserField.getConnectionManager().makeRequest(Req).openInputStream();

【讨论】:

    【解决方案3】:

    尝试使用以下代码重定向链接:

     HttpConnection hc = (HttpConnection) Connector.open(url1);
    
     hc.setRequestMethod(HttpConnection.GET);
     hc.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
     InputStream is = null;
     String location =hc.getHeaderField("Location");
    
     HttpConnection hcc = (HttpConnection) Connector.open(location);
     is = hcc.openDataInputStream();
    

    【讨论】:

      【解决方案4】:

      尝试添加传输到地址 例如通过 wi-fi 连接:

      httpConnection = (HttpConnection)Connector.open("http://www.google.com;interface=wifi"); 
      

      【讨论】:

      • 我使用的是默认连接。我认为它也应该起作用。是吗
      猜你喜欢
      • 2011-08-31
      • 1970-01-01
      • 2013-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多