2012-09-22 36 views
1

这是我的代码的HttpConnection不是在真实设备工作-Blackberry

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; 

} 

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

我该如何解决这个问题?

+0

你必须添加用于连接互联网的连接字符串。 – Signare

+0

你通过wifi或gprs连接互联网? – Signare

+0

我通过wifi连接互联网 – prakash

回答

4

参阅知识中心文章"Different ways to make an HTTP or socket connection"

追加连接字符串您url.Then尝试

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; 
} 
+0

hi Signare我可能知道“String carrierUid = getCarrierBIBSUid();”这个方法做什么? – prakash

+0

我更新了我的答案。检查编辑部分。 – Signare

+0

伟大的工作... – prakash

相关问题