如何正确构建HTTP连接后缀

时间:2011-02-14 13:54:17

标签: blackberry httpconnection

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

如何在上述网址中添加适当的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();

但是我遇到了一个隧道异常,我不确定下一步该做什么。

此网址也会导致异常: 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

我对如何使其发挥作用感到困惑。

5 个答案:

答案 0 :(得分:3)

你绝对想要分号(;)而不是&符号(&)。你想在模拟器上运行吗?如果是这样,你有运行MDS模拟器吗?为了在模拟器上使用devicside=false,这是必需的。

答案 1 :(得分:2)

尝试使用Versatile Monkey的networking helper class来查找HTTP连接的最佳路径,并避免这些隧道异常。并使用正确的语法形成URL。

答案 2 :(得分:2)

在BlackBerry Java开发论坛上有一个very good posting,其中包含示例HTTP连接代码。

答案 3 :(得分:2)

答案 4 :(得分:1)

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