Pessoal, gostaria de poder melhorar esse algoritmo ou ainda se existir alguma classe que ja o faça, qual seria???
meu programa envia msg html onde o usuario digita uma url e o programa envia o conteuodo do mesmo para o destinatario...
o que acontece...a classe URL e URLConnection retorna a url do site porem as imagens e links sao referencias por local..
exemplo.
num determinado, se vc exibir o codigo fonte vai ter trechos assim
a classe url retorna isso tb e se eu enviar desse jeito, no email nao vai a imagem... ai eu tenho que ler toda a string url e onde tiver

public String getUrl() throws IOException {
String linha, text;
String comp = "src=\""+getLink();
URL link = new URL(this.url);
BufferedReader buffer = new BufferedReader(new InputStreamReader(link
.openStream()));
linha = "";
text = "";
while ((linha = buffer.readLine()) != null)
text = text + linha +"\n";
buffer.close(); // fecha o buffer
String oi[] = text.split("src=\"");
String sei = oi[0];
int size = oi.length;
for(int i=1; i<size; i++){
sei = sei + (comp + oi[i]);
}
String comp2 = "href=\""+getLink();
String nao[] = sei.split("href=\"");
String ola = nao[0];
int sizes = nao.length;
for(int i=1; i<sizes; i++){
ola = ola + (comp2 + nao[i]);
}
String comp3 = "background=\""+getLink();
String back[] = ola.split("background=\"");
String init = back[0];
int tamanho = back.length;
for(int i=1; i<tamanho; i++){
init = init + comp3 + back[i];
}
String comp4 = "href=
so que ainda assim tem sites que vem defeituosos..
pq?
primeiro pq tem sites que usam aspas duplas <img src="/img/tltl.gif" outros aidna usam aspas simples <img src='/img/tltl.gif'
outros tem partes que ja estao completos <img src="http://www.uol.com.br/img/tltl.gif" e nesses casos o programa também extrai e recoloca, perdendo tempo.
Entao minha pergunta é.. tem como ler os caracteres e numa cajadada só, ja verificar se o link está absoluto, caso nao, ele ja substituir o href, o src ou backgroud... pq pela minha implementação, como podem ter visto, eu varro a string toda 1x para cada analise(ou seja, 1 vez para src, outra vez para href e outra para background) e isso pq ai tou considerando apenas apsas duplas... se for colocar aspas simples, dobrara o tempo de verificação.
ficou grandinho mas espero que esteja bem claro :)
qualquer duvida, podem falar :D"+getLink();
String back1[] = init.split("href=
so que ainda assim tem sites que vem defeituosos..
pq?
primeiro pq tem sites que usam aspas duplas <img src="/img/tltl.gif" outros aidna usam aspas simples <img src='/img/tltl.gif'
outros tem partes que ja estao completos <img src="http://www.uol.com.br/img/tltl.gif" e nesses casos o programa também extrai e recoloca, perdendo tempo.
Entao minha pergunta é.. tem como ler os caracteres e numa cajadada só, ja verificar se o link está absoluto, caso nao, ele ja substituir o href, o src ou backgroud... pq pela minha implementação, como podem ter visto, eu varro a string toda 1x para cada analise(ou seja, 1 vez para src, outra vez para href e outra para background) e isso pq ai tou considerando apenas apsas duplas... se for colocar aspas simples, dobrara o tempo de verificação.
ficou grandinho mas espero que esteja bem claro :)
qualquer duvida, podem falar :D");
String init1 = back1[0];
int tamanho1 = back1.length;
for(int i=1; i<tamanho1; i++){
init1 = init1 + comp4 + back1[i];
}
String comp5 = "src=
so que ainda assim tem sites que vem defeituosos..
pq?
primeiro pq tem sites que usam aspas duplas <img src="/img/tltl.gif" outros aidna usam aspas simples <img src='/img/tltl.gif'
outros tem partes que ja estao completos <img src="http://www.uol.com.br/img/tltl.gif" e nesses casos o programa também extrai e recoloca, perdendo tempo.
Entao minha pergunta é.. tem como ler os caracteres e numa cajadada só, ja verificar se o link está absoluto, caso nao, ele ja substituir o href, o src ou backgroud... pq pela minha implementação, como podem ter visto, eu varro a string toda 1x para cada analise(ou seja, 1 vez para src, outra vez para href e outra para background) e isso pq ai tou considerando apenas apsas duplas... se for colocar aspas simples, dobrara o tempo de verificação.
ficou grandinho mas espero que esteja bem claro :)
qualquer duvida, podem falar :D"+getLink();
String back2[] = init1.split("src=
so que ainda assim tem sites que vem defeituosos..
pq?
primeiro pq tem sites que usam aspas duplas <img src="/img/tltl.gif" outros aidna usam aspas simples <img src='/img/tltl.gif'
outros tem partes que ja estao completos <img src="http://www.uol.com.br/img/tltl.gif" e nesses casos o programa também extrai e recoloca, perdendo tempo.
Entao minha pergunta é.. tem como ler os caracteres e numa cajadada só, ja verificar se o link está absoluto, caso nao, ele ja substituir o href, o src ou backgroud... pq pela minha implementação, como podem ter visto, eu varro a string toda 1x para cada analise(ou seja, 1 vez para src, outra vez para href e outra para background) e isso pq ai tou considerando apenas apsas duplas... se for colocar aspas simples, dobrara o tempo de verificação.
ficou grandinho mas espero que esteja bem claro :)
qualquer duvida, podem falar :D");
String init2 = back2[0];
int tamanho2 = back2.length;
for(int i=1; i<tamanho2; i++){
init2 = init2 + comp5 + back2[i];
}
return init2;
}
/*
* Retorna o link, exemplo "http://www.fsm.com.br/fsmcurriculos/view/index.php"
* retorna "http://www.fsm.com.br/fsmcurriculos/view/"
*/
public String getLink() {
int k = 0;
ArrayList palavras = new ArrayList();
String bufferTexto = this.url;
int size = bufferTexto.length();
for (int i = 0; i < size; i++) {
if ((bufferTexto.substring(i, i + 1).equals("/"))) {
palavras.add(bufferTexto.substring(k, i+1));
} // fim do if
} // fim do for
int tam = palavras.size();
return ((String)palavras.get(tam-1));
}
so que ainda assim tem sites que vem defeituosos..
pq?
primeiro pq tem sites que usam aspas duplas
Entao minha pergunta é.. tem como ler os caracteres e numa cajadada só, ja verificar se o link está absoluto, caso nao, ele ja substituir o href, o src ou backgroud... pq pela minha implementação, como podem ter visto, eu varro a string toda 1x para cada analise(ou seja, 1 vez para src, outra vez para href e outra para background) e isso pq ai tou considerando apenas apsas duplas... se for colocar aspas simples, dobrara o tempo de verificação.