1

我已经编写了代码来使用谷歌地图反向地理编码来获取位置名称,例如: http://maps.google.com/maps/geo?json&ll=9.6,73.7

如何向上述 URL 添加适当的 HTTP 连接后缀?

我尝试了以下功能:

private static String getConnectionStringForGoogleMap(){
    String connectionString="";
    if(WLANInfo.getWLANState()==WLANInfo.WLAN_STATE_CONNECTED){
        connectionString="&interface=wifi";
    }   
     else if((CoverageInfo.getCoverageStatus() & CoverageInfo.COVERAGE_MDS) == CoverageInfo.COVERAGE_MDS){
         connectionString = "&deviceside=false";
    }
        else if((CoverageInfo.getCoverageStatus() & CoverageInfo.COVERAGE_DIRECT)==CoverageInfo.COVERAGE_DIRECT){
            String carrierUid=getCarrierBIBSUid();
            if(carrierUid == null) {
                connectionString = "&deviceside=true";
            }
            else{
                 connectionString = "&deviceside=false&connectionUID="+carrierUid + "&ConnectionType=mds-public";
                }

            }
     else if(CoverageInfo.getCoverageStatus() == CoverageInfo.COVERAGE_NONE)
        {

        }
    return connectionString;
    }

当我在模拟器中运行应用程序时,我会创建如下 URL: http://maps.google.com/maps/geo?json&ll=9.6,73.7+getConnectionStringForGoogleMap();

但我得到一个隧道异常,不知道下一步该做什么。

此 URL 也会导致异常: http://maps.google.com/maps/geo?json&ll=9.6,73.7&deviceside=false&ConnectionType=mds-public

就像这样: http://maps.google.com/maps/geo?json&ll=9.6,73.7;deviceside=false;ConnectionType=mds-public

我很困惑该怎么做才能让它发挥作用。

4

5 回答 5

3

您肯定需要分号 (;) 而不是和号 (&)。你想在模拟器上运行它吗?如果是这样,您是否正在运行 MDS 模拟器?这是在devicside=false模拟器上使用所必需的。

于 2011-02-14T14:58:06.357 回答
2

在 BlackBerry Java 开发论坛上有一篇非常好的帖子,其中包含示例 HTTP 连接代码。

于 2011-02-14T19:07:53.663 回答
2

尝试使用 Versatile Monkey 的网络帮助程序类来找到 HTTP 连接的最佳路径并避免那些隧道异常。并使用正确的语法形成 URL。

于 2011-02-14T16:14:13.533 回答
2

尝试使用以下它对我有用

http://maps.google.com/maps/geo?json&ll=9.6,73.7&;deviceside=false;ConnectionType=mds-public

于 2012-01-12T07:40:33.387 回答
1

如果您的目标是 OS5 及更高版本,则可以使用ConnectionFactory。这需要花费大量精力来建立正确的连接类型。

于 2012-01-12T10:11:26.070 回答