0

Nokia s40 Asha 305 デバイスで別の URL をロードしているときにメモリ不足エラーが発生しましたが、私の同じコードは Asha501 でうまく機能します。

私がしなければならないこと??誰でも私を助けることができます。Web 応答用のデータ取得コードを追加しました

    public static String getDataFromServer(String serverUrl) {
    HttpsConnection httpConn = null;
    InputStream is = null;
    String dataRead = "";
    try {
        httpConn = (HttpsConnection) Connector.open(serverUrl);

        if ((httpConn.getResponseCode() == HttpsConnection.HTTP_OK)) {
            int length = (int) httpConn.getLength();
            is = httpConn.openInputStream();
            if (length == -1) {
                int chunkSize = 1023;
                byte[] data = new byte[chunkSize];
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                int dataSizeRead;
                while ((dataSizeRead = is.read(data)) != -1) {

                    baos.write(data, 0, dataSizeRead);

                }
                dataRead = new String(baos.toByteArray());


                baos.close();
            } else {
                DataInputStream dis = new DataInputStream(is);
                byte[] data = new byte[length];
                dis.readFully(data);
                dataRead = new String(data);
            }
        } else {
            dataRead = SERVER_ERROR;
        }

    } catch (Throwable t) {
            dataRead = NO_CONNECTION;

    } finally {
        try {
            if (is != null) {
                is.close();
            }
        } catch (Throwable t) {

        }
        try {
            if (httpConn != null) {
                httpConn.close();
            }
        } catch (Throwable t) {

        }
    }
    return dataRead;
}
4

1 に答える 1

0

取得したデータをどうするか?
そのデータを解析する場合は、String の代わりに InputStream を返すことができます。
ファイルに保存する場合は、メソッドに OutputStream パラメータを追加します。

于 2013-10-03T17:25:18.980 に答える