J2ME (Enviar arquivo para área ftp)

Olá pessoal,

Estou tentando enviar um arquivo do celular para uma área ftp.

Mostra a seguinte erro: cannot access java.net.InetAddress
file java\net\InetAddress.class not found
ftp.connect(“ftp.servidorftp.terra.com.br” );

Segue código:

FTPClient ftp = new FTPClient();
try {
ftp.connect(“ftp.servidorftp.terra.com.br” );
ftp.login(“111”, “11111111”);
InputStream arqEnviar = (InputStream) Connector.open(“File:///C:/Dados.txt”);

            if (ftp.storeFile("/minha_pasta/Dados.txt", arqEnviar)) {
                System.out.println("Arquivo armazenado com sucesso!");
            } else {
                System.out.println("Erro ao armazenar o arquivo.");
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }

Pela mensagem parece que ele não está localizando o provedor ftp: "ftp.servidorftp.terra.com.br"
Isto é um exemplo, ou você digitou isso mesmo?

[quote=edwagner]Pela mensagem parece que ele não está localizando o provedor ftp: "ftp.servidorftp.terra.com.br"
Isto é um exemplo, ou você digitou isso mesmo?
[/quote]

edwagner, é apenas um exemplo.

Na aplicação desktop consigo acessar e enviar o arquivo normalmente.

Em J2ME mostra erro: cannot access java.net.InetAddress
file java\net\InetAddress.class not found
ftp.connect(“ftp.servidorftp.terra.com.br” )

[quote=dev-ailson]Em J2ME mostra erro: cannot access java.net.InetAddress
file java\net\InetAddress.class not found
ftp.connect(“ftp.servidorftp.terra.com.br” )
[/quote]

edwagner,

Acho que não está conseguindo localizar a classe java/net/InetAddress.class.

Realmente não existe a InetAddress.class na pasta java/net. Existe a extensão .java (java/net/InetAddress.java).

Em J2ME não tem FTPClient()

edwagner,

Em J2me teria como fazer isso?

Sim você usa a classe javax.microedition.io.SocketConnection ela funciona quase do mesmo modo. Mas não tenho como te mostrar agora, como diz o boone: “vai ter que fazer o dever de casa.” Qualquer novidade, posta aí pra gente.

Um abraço,
Edwagner

Obrigado pela citação…hahaha…

É isto mesmo. O edwagner já deu o caminho. Eu complemento dizendo para vc estudar o protocolo FTP (RFC) e montar teu próprio client.

[quote=edwagner]
Sim você usa a classe javax.microedition.io.SocketConnection ela funciona quase do mesmo modo. Mas não tenho como te mostrar agora, como diz o boone: “vai ter que fazer o dever de casa.” Qualquer novidade, posta aí pra gente. [/quote]

Olá pessoal, estou fazendo meu dever de casa.

Consegui implementar a classe SocketConnection, mas estou com dois probleminhas:

1 - O servidor “FTP” tem username e password.

  • Como informar esses parâmetros para o servidor?

2 - Quando tento me conectar o servidor “FTP” ele retorna: “Exception: Connection timed out: connect”. Se conecto em outro endereço funciona corretamente.

  • Esse erro é por causa do parâmetro “username e password” não informado ao servidor?

Aguardo e grato pelos comentários de todos.

private void conectar() { append("\nCriando Thread..."); new Thread(new Runnable() { public void run() { append("\nConectando..."); String url = "http://ftp.meudisco.terra.com.br"; HttpConnection http = null; InputStream inStream = null; try { http = (HttpConnection) Connector.open(url, Connector.READ_WRITE, true); append("\nConexão criada!"); http.setRequestMethod(HttpConnection.GET); append("\n"+url); http.setRequestProperty("Connection", "close"); append("\nPegando resposta..."); int rc = http.getResponseCode(); append("\nResposta: " + rc); if (rc == HttpConnection.HTTP_OK) { inStream = http.openInputStream(); append("\nInputStream aberta"); byte[] data = new byte[512]; int count; ByteArrayOutputStream returnData = new ByteArrayOutputStream(); while ((count = inStream.read(data)) > -1) if (count > 0) returnData.write(data, 0, count); String respStr = new String(returnData.toByteArray()); returnData.close(); append("\nRESPOSTA: " + respStr); } else append("\nErro " + rc + " na resposta do servidor: " + http.getResponseMessage() + "."); } catch (Exception e) { append("\nException: " + e.getMessage()); } try { inStream.close(); } catch (Exception e) {} try { http.close(); } catch (Exception e) {} append("\nFinalizado!"); } }).start(); }

Nossa, vc está bem perdido hein…

Vamos lá:

  1. Vc não tem que implementar SocketConnection coisa nenhuma e sim fazer assim:

StreamConnection connection = (StreamConnection) Connector.open(“socket://ftp.lalala.com:21”)

O user e password vc passa normalmente uma vez que conectar, por isto eu te disse para estudar o protocolo FTP, mas vc não fez isto !!!

  1. O código q vc postou não tem nada a ver…vc tá tentando falar com um servidor FTP usando HTTP, é como fazer um alemão conversar com um brasileiro !

Em resumo:
Volte ao item 1 que te mostrei e estude o protocolo FTP. Meu, só não vai funcionar se vc continuar com a preguiça e quiser tudo mastigado

[quote=boone]
Em resumo:
Volte ao item 1 que te mostrei e estude o protocolo FTP. Meu, só não vai funcionar se vc continuar com a preguiça e quiser tudo mastigado[/quote]

boone, você é mesmo uma figura!

Vou seguir seus conselhos e estudar o protocolo FTP.

Valeu, qualquer dúvida posto novamente.