2

クライアントサーバーを使用して画面に画像を表示しようとしていますが、例外が発生しました

プロトコルが見つかりません: net.rim.device.cldc.io.ftp.Protocol"、java.lang.IllegalArgumentException。

ここで、例外が発生するコードを投稿しました(現在、アプリでクライアントサーバーに正常にログインし、フォルダーとディレクトリを表示します。新しい画面で開いているファイルをクリックしたいです。)

package com.rim.samples.device.mapactiondemo;

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.component.BitmapField;
import net.rim.device.api.ui.container.MainScreen;

public class ShowData extends MainScreen {

String connParams;

public ShowData() {

    // Check Type of connection
    CheckConnection obj1 = new CheckConnection();
    connParams = obj1.getConnParam();

    Bitmap listThumb;

    String path = "ftp://dice:pAssw0rd@64.207.149.236:21/images/facebook.png"
        + connParams + "";

    listThumb = getImage.getImageFromUrl(path);

    BitmapField bitmapField1 = new BitmapField(listThumb);
    add(bitmapField1);

}

}

getImage.java

package com.rim.samples.device.mapactiondemo;

import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;
import java.io.IOException;
import java.io.InputStream;
import java.lang.String;
import net.rim.device.api.system.Bitmap;

public final class getImage {

/**
 * Fetches the content on the speicifed url. The url of the content to fetch
 */

public static Bitmap getImageFromUrl(String url) {
    Bitmap bitmap = null;

    try {
        String bitmapData = getDataFromUrl(url);
        bitmap = Bitmap.createBitmapFromBytes(bitmapData.getBytes(), 0,
                bitmapData.length(), 1);
        // Image.createImage(imageData.getBytes(), 0,imageData.length());
    } catch (Exception e1) {
        e1.printStackTrace();
        System.out.println(e1);
    }

    return bitmap;
}

/**
 * Fetches the content on the speicifed url. The url of the content to fetch
 */
private static String getDataFromUrl(String url) {
    StringBuffer b = new StringBuffer();
    InputStream is = null;

    SocketConnection c = null;

    long len = 0;
    int ch = 0;

    try {
        c = (SocketConnection) Connector.open(url);
        c.setSocketOption(SocketConnection.LINGER, 5);
        c.setSocketOption(SocketConnection.DELAY, 5);

        is = c.openInputStream();
        //len = is.getLength();
        if (len != -1) {
            // Read exactly Content-Length bytes
            for (int i = 0; i < len; i++)
                if ((ch = is.read()) != -1) {
                    b.append((char) ch);
                }
        } else {
            // Read until the connection is closed.
            while ((ch = is.read()) != -1) {
                len = is.available();
                b.append((char) ch);
            }
        }

        is.close();
        c.close();

    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    return b.toString();
}

}
4

1 に答える 1

1

私の知る限り、BlackBerry Java SDK には ftp プロトコルが実装されていません。ftp の代わりに http プロトコルを使用します。

于 2013-09-17T12:04:44.653 に答える