我编写了使用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
我对如何使其发挥作用感到困惑。
答案 0 :(得分:3)
你绝对想要分号(;)而不是&符号(&)。你想在模拟器上运行吗?如果是这样,你有运行MDS模拟器吗?为了在模拟器上使用devicside=false
,这是必需的。
答案 1 :(得分:2)
尝试使用Versatile Monkey的networking helper class来查找HTTP连接的最佳路径,并避免这些隧道异常。并使用正确的语法形成URL。
答案 2 :(得分:2)
在BlackBerry Java开发论坛上有一个very good posting,其中包含示例HTTP连接代码。
答案 3 :(得分:2)
尝试使用以下内容 它对我有用
http://maps.google.com/maps/geo?json&ll=9.6,73.7&;deviceside=false;ConnectionType=mds-public
答案 4 :(得分:1)
如果您的目标是OS5及更高版本,则可以使用ConnectionFactory。这需要花费大量精力来建立正确的连接类型。