1

ブラックベリーアプリケーションでデータを取得する際に問題に直面しています.以下のコードは、xml形式のサーバーからデータを取得するために使用し、このデータを解析してユーザーに表示します.wi-fiでは正常に動作しますが、実行するとEDGEまたはGPRSを使用する実際のデバイスでは、動作が非常に遅く、多くの場合、入力ストリームがnullになります.なぜこれが遅いネットワークで発生しているのか、Wi-Fiでは発生していないのかわかりません.

public InputStream getInputStream(String url)
{   
    HttpConnection  httpConnection = null;
    try
    {
        httpConnection = getConnectionForRequest(url);
        final int iResponseCode = httpConnection.getResponseCode();
        if(iResponseCode == HttpConnection.HTTP_OK)
        {
            return httpConnection.openInputStream();

        }
        else
            return null;
    }
    catch (Exception e)
    {
        return null;
    }
            finally
            {
                if(httpConnection!=null)
                {
                      httpConnection.close();
                }
            }

}

public HttpConnection getConnectionForRequest(String url) 
{

    int[] availableTransportTypes = {TransportInfo.TRANSPORT_TCP_WIFI,
                                     TransportInfo.TRANSPORT_BIS_B, 
                                     TransportInfo.TRANSPORT_WAP2,
                                     TransportInfo.TRANSPORT_TCP_CELLULAR, 
                                     TransportInfo.TRANSPORT_MDS, 
                                     TransportInfo.TRANSPORT_WAP};
    final ConnectionFactory connectionFactory = new ConnectionFactory();


    for (int i = 0; i < availableTransportTypes.length; i++) 
    {
        int transport = availableTransportTypes[i];
        if (!TransportInfo.isTransportTypeAvailable(transport) || !TransportInfo.hasSufficientCoverage(transport)) 
        {
            Arrays.removeAt(availableTransportTypes, i);
        }
    }

    connectionFactory.setPreferredTransportTypes(availableTransportTypes);
    connectionFactory.setAttemptsLimit(50);
    connectionFactory.setConnectionTimeout(3000);
    connectionFactory.setTimeLimit(20000);
    final ConnectionDescriptor connectionDescriptor = connectionFactory.getConnection(url);
    HttpConnection connection = null;
    if (connectionDescriptor != null) 
    {
        connection = (HttpConnection) connectionDescriptor.getConnection();
    }

    return connection;
}


public boolean parseData()
{   
    InputStream  is = getInputStream("http://data.****.com/getData.aspx");
    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder;
    Document doc;
    try 
    {
        docBuilder = docBuilderFactory.newDocumentBuilder();
        doc = docBuilder.parse(is);
        is.close();
        doc.getDocumentElement().normalize();
        docBuilder.isValidating();
    } 
    catch(Exception ex) 
    {           
        return false;
    }                                   
    return true;
}
4

0 に答える 0