1

这是我的代码

public String Serverconnection(String url) {

    String line = "";

    if (DeviceInfo.isSimulator()) {
        url = url + ";deviceSide=true";
    }
    try {
        HttpConnection s = (HttpConnection) Connector.open(url);//*i get the exception here*
        s.setRequestProperty("Content-Type",
                "application/x-www-form-urlencoded");
        s.setRequestProperty(
                "Accept",
                "text/html,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
        s.setRequestProperty(HttpHeaders.HEADER_ACCEPT_CHARSET, "UTF-8");
        s.setRequestMethod(HttpConnection.GET);
        InputStream input = s.openInputStream();
        byte[] data = new byte[10240];
        int len = 0;
        StringBuffer raw = new StringBuffer();

        while (-1 != (len = input.read(data))) {
            raw.append(new String(data, 0, len));
        }

        line = raw.toString();

        input.close();
        s.close();
    } catch (Exception e) {
        System.out.println("response--- excep" + line + e.getMessage());
    }
    return line;

}

当我在模拟器中运行时,此代码工作正常。但在真实设备中,我得到了异常“详细信息不可用 - VM 不支持”“未指定 APN”。

我怎样才能解决这个问题?

4

1 回答 1

4

参考知识中心文章《建立HTTP或socket连接的不同方式》

将连接字符串附加到您的 url。然后尝试

private static String getConnectionString(){
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;
}

编辑 : -

private static String getCarrierBIBSUid()
{
    ServiceRecord[] records = ServiceBook.getSB().getRecords();
    int currentRecord;

    for(currentRecord = 0; currentRecord < records.length; currentRecord++)         {             if(records[currentRecord].getCid().toLowerCase().equals("ippp"))             {                 if(records[currentRecord].getName().toLowerCase().indexOf("bibs") >= 0)
            {
                return records[currentRecord].getUid();
            }
        }
    }

    return null;
}
于 2012-09-22T07:41:45.217 回答