Pessoal, primeiramente este é o código (em html) exemplo da página:
Cidade:Guaramirim<br>110km<br>2h5min
então
atraves de uma httpConnection quero pegar a quilometragem (110 km) e o tempo (2h5min), meu código é o seguinte:
publicvoidpegar_rota(){try{Stringdestino=jtfdestino.getString();//Chama o Método de Retirada de espaços da string, adicionando o %20 no lugar dos espaços para poder ser adicionado na URLdestino=replaceAll(destino," ","%20");//Cria a URL da rotaurl="http://localhost:8084/projetojspguilherme/pesquisar?destino="+destino;System.out.println(url);// Inicia a Conexão HTTPHttpConnectionconn=(HttpConnection)Connector.open(url);// Seta o Método de POST na Conexãoconn.setRequestMethod(HttpConnection.POST);// Seta as Propriedados do Request Feito Pela Conexãoconn.setRequestProperty("User-Agent","Profile/MIDP-1.0 Configuration/CLDC-1.0");conn.setRequestProperty("Content-Language","en-US");conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");// Abre uma Nova InputStream, para serem pegos os dadosInputStreamis=conn.openInputStream();booleanret=false;// Processa a Resposta do Servidorret=processServerResponse(conn,is);// Fexa a Conexãoconn.close();}catch(Exceptione){System.out.println(e);}}privatebooleanprocessServerResponse(HttpConnectionconn,InputStreamis)throwsIOException{{//Reset error messageStringerrorMsg=null;// 1) Get status Lineif(conn.getResponseCode()==HttpConnection.HTTP_OK){// 3) Get body (data)intlength=(int)conn.getLength();Stringstr;if(length!=-1){byteservletData[]=newbyte[length];is.read(servletData);str=newString(servletData);}else// Length not available...{ByteArrayOutputStreambStrm=newByteArrayOutputStream();intch;while((ch=is.read())!=-1)bStrm.write(ch);str=newString(bStrm.toByteArray());bStrm.close();// Seleciona onde fica o fim da palavra no código HTMLintfimdist=str.indexOf("<br>");// Corta a parte do fim que não interessaStringrestodist=str.substring(0,fimdist);//Busca Pelos Caracteres que ficam antes da traduçãointiniciodist=restodist.indexOf("<br>");//Recorta Somente a quilometragemquilometragem=restodist.substring(iniciodist+27);}// Update the string item on the displayreturntrue;}else// Use message from the servleterrorMsg=newString(conn.getResponseMessage());}returnfalse;}// Método de Replace ALL, que não existe no J2MEpublicstaticStringreplaceAll(StringFraseComEspaco,StringEspaco,StringSemEspaco){intfrom=0;StringBuffersb=newStringBuffer();intindex=-1;while(true){index=FraseComEspaco.indexOf(Espaco,from);if(index!=-1){sb=newStringBuffer();Stringupto=FraseComEspaco.substring(0,index);sb.append(upto+SemEspaco);Stringlastbit=FraseComEspaco.substring(index+Espaco.length(),FraseComEspaco.length());sb.append(lastbit);FraseComEspaco=sb.toString();from=index+Espaco.length();}else{break;}}returnFraseComEspaco;}
a critério de teste estou pegando somente a quilometragem
quero exibir a var quilometragem dentro de uma StringItem num form chama resposta
como fasso?
abração
ow pessoal
a duvida é relativamente simples
exibir a variável “quilometragem” dentro de uma StringItem que está dentro do Form “resposta”
:!: :!:
G
guigavieira
ow pessoal
a duvida é relativamente simples
exibir a variável “quilometragem” dentro de uma StringItem que está dentro do Form “resposta”
CORRIGINDO-ME
Fazer o valor da variável aparecer no StringItem é patéticamente fácil
public StringItem get_string_distancia() {
if (string_distancia == null) {
string_distancia = new StringItem("", quilometragem);
}
return string_distancia;
}
a questão agora é:
:!: :! QUE ESTÁ ERRADO NA CONEXÃO? :!: :!:
pois se atribuo um valor “X” para a var ela exibi
o erro está na conexão
ajudaaa
L
leeeeooooooo
cara eu não saquei direto sua lógica, mas eu acho que eh por que vc fecha a conexão na linha 24 e depois vc requere ela de novo, soh que ela esta fechada.
G
guigavieira
Pessoal
To desenvolvendo em NetBeans 5.5
ao inserir o vaor da variavel destino
ele exibe o seguinte form
[URL=http://img134.imageshack.us/my.php?image=connectionsy2.png][/URL]
não me retornando resposta nenhuma
alguem teria alguma ideia de como resolver isso?
penso eu que é algo relacionado a configuração.
abrass
Jaison
por curiosidade vc está usando Thread na sua conexão?
da algum erro no console?
G
guigavieira
Ae é que tá Jaison
ele num me traz nenhum erro
aparece do display do emulador aquela msg
e no console aparece isso:
Warning: To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.
por isso penso que é algo relacionado a uma configuração de segurança, sei lá
abrass
Jaison
guigavieira:
Ae é que tá Jaison
ele num me traz nenhum erro
aparece do display do emulador aquela msg
e no console aparece isso:
Warning: To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.
por isso penso que é algo relacionado a uma configuração de segurança, sei lá
abrass
povo
minha aplicação tá conectando, pois o netBeans chama a aba http Monitor, que só aparece quando há uma conexão
o código da página que quer obter dados é esse:
no meu código, a seguir, peço somente a quilometragem (48km), mas a variável quilometragem retorna null
publicclassConectaextendsThread{HttpConnectionconnection=null;InputStreamis=null;OutputStreamos=null;StringBufferstringBuffer=newStringBuffer();StringItemstresposta=null;publicvoidrun(){try{url="http://localhost:8084/JSP_Guilherme_Eduardo/pesquisar?destino="+destino+"&origem="+origem;"; connection = (HttpConnection)Connector.open(url); connection.setRequestMethod(HttpConnection.GET); connection.setRequestProperty("IF-Modified-Since","20Jan200116:19:14GMT"); connection.setRequestProperty("User-Agent","Profile/MIDP-2.0Confirguration/CLDC-1.0"); connection.setRequestProperty("Content-Language", "en-CA"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); os = connection.openOutputStream(); is = connection.openDataInputStream(); boolean ret = false; // Processa a Resposta do Servidor ret = processServerResponse(connection, is); // Fexa a Conexão connection.close (); } catch (Exception e){ System.out.println(e); } } } private boolean processServerResponse(HttpConnection conn, InputStream is) throws IOException { //Reset error message String errorMsg = null; // 1) Get status Line if (conn.getResponseCode() == HttpConnection.HTTP_OK) { // 3) Get body (data) int length = (int) conn.getLength(); String str; if (length != -1) { byte servletData[] = new byte[length]; is.read(servletData); str = new String(servletData); } else // Length not available... { ByteArrayOutputStream bStrm = new ByteArrayOutputStream(); int ch; while ((ch = is.read()) != -1) bStrm.write(ch); str = new String(bStrm.toByteArray()); bStrm.close(); // Seleciona onde fica o fim da palavra no código HTML int fimdist = str.indexOf("<b><br>"); // Corta a parte do fim que não interessa String restodist = str.substring(0, fimdist); //Busca Pelos Caracteres que ficam antes da tradução int iniciodist = restodist.indexOf("<br><b>"); //Recorta Somente a quilometragem quilometragem = restodist.substring(iniciodist+27); } // Update the string item on the display return true; } else { // Use message from the servlet errorMsg = new String( conn.getResponseMessage()); } return false; }
lembrando que origem e destino são Strings lidas em textfields em um formulario anterior
alguma ideia, ou oq estou fazendo de errado?
obrigadão :wink:
G
guigavieira
pessoal
ainda não consigo pegar os dados
num me reotrna nada
agora quando solicito a conexão com o meu aplicativo me retorna isso no console:
javax.microedition.io.ConnectionNotFoundException: TCP open
???
conexão não encontrada?
mas
tcp aberta?
ajudem-me
por favor
G
guigavieira
// método que efetua a conexãopublicvoidrun(){// Faz uso do método replaceall para que as variáveis destino e origem possam ser usadas na urldestino=replaceAll(destino," ","%20");origem=replaceAll(origem," ","%20");//Define a url para a conexão url="http://localhost:8080/JSP_Guilherme_Eduardo/pesquisar?destino="+destino+"&origem="+origem;StreamConnectionSC=null;//Cria uma nova StreamConnectionInputStreamIS=null;//Cria uma nova InputStreamStringBufferSB=newStringBuffer();//Cria uma nova StringBuffertry{SC=(StreamConnection)Connector.open(url);//Faz a conexão com a urlIS=SC.openInputStream();//Abre a entrada de dados para o celularintch;while((ch=IS.read())!=-1){//Enquanto o valor de ch for diferente de -1SB.append((char)ch);// Adiciona um char ao StringBuffer e altera o valor de ch}conteudo=SB.toString();//converte a StringBuffer em String e adiciona na variável conteúdoif(IS!=null){// Se a entrada de dados estiver abertaIS.close();// Fecha a entrada de dados}if(SC!=null){// Se a conexão estiver abertaSC.close();//Fecha a conexão}}catch(Exceptionexc){//Se não for possível conectarSystem.out.println("Exception "+exc);// Exibe o erro no console}corte();// chama o metodo corte}// método que efetua o corte da variavel conteudo e mostra na tela o conteudo utilpublicvoidcorte(){intindex,lastindex;// cria as variáveis do tipo int index e lastindex para a contagem dos caracteresindex=conteudo.indexOf("<b>");// atribui que index ira começar a partir do <b> do código htmlindex=index+3;// index recebe 3 para pular <b>lastindex=conteudo.indexOf("<b>",index);// define lastindex(fim do trecho) como o proximo <b> a partir do anterior(index)lastindex=lastindex+4;// o fim da string recebe mais 4 caracteres (pula <br>) str_km.setText(conteudo.substring(index,lastindex-4));// seta no StringItem o conteudo entre index e lastindex e diminui 4 do lastindex pra iniciar para o outro trecho da Stringindex=conteudo.indexOf("<b>",lastindex);// define o index como o proximo <b> depois de lastindexindex=index+3;//index recebe 3 pra pular <b>lastindex=conteudo.indexOf("<b>",index);// define lastindex como o proximo <b> depois do indexstr_tempo.setText(conteudo.substring(index,lastindex));//seta no String item o conteudo entre index e lastindex}// Método de Replace ALLpublicstaticStringreplaceAll(StringFraseComEspaco,StringEspaco,StringSemEspaco){intfrom=0;StringBuffersb=newStringBuffer();intindex=-1;while(true){index=FraseComEspaco.indexOf(Espaco,from);if(index!=-1){sb=newStringBuffer();Stringupto=FraseComEspaco.substring(0,index);sb.append(upto+SemEspaco);Stringlastbit=FraseComEspaco.substring(index+Espaco.length(),FraseComEspaco.length());sb.append(lastbit);FraseComEspaco=sb.toString();from=index+Espaco.length();}else{break;}}returnFraseComEspaco;}