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 またはソケット接続を行うさまざまな方法」を参照してください。

接続文字列を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 に答える