//Chama o Método de Retirada de espaços da string, adicionando o %20 no lugar dos espaços para poder ser adicionado na URL
destino = replaceAll(destino," ", "%20");
//Cria a URL da rota
url = "http://localhost:8084/projetojspguilherme/pesquisar?destino="+destino;
System.out.println(url);
// Inicia a Conexão HTTP
HttpConnection conn =(HttpConnection) Connector.open(url);
// Seta o Método de POST na Conexão
conn.setRequestMethod(HttpConnection.POST);
// Seta as Propriedados do Request Feito Pela Conexão
conn.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 dados
InputStream is = conn.openInputStream ();
boolean ret = false;
// Processa a Resposta do Servidor
ret = processServerResponse(conn, is);
// Fexa a Conexão
conn.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("<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>");
//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;
}
// Método de Replace ALL, que não existe no J2ME
public static String replaceAll(String FraseComEspaco, String Espaco,String SemEspaco){
int from = 0;
StringBuffer sb = new StringBuffer();
int index = -1;
while(true){
index = FraseComEspaco.indexOf(Espaco,from);
if(index!=-1){
sb = new StringBuffer();
String upto = FraseComEspaco.substring(0,index);
sb.append(upto+SemEspaco);
String lastbit = FraseComEspaco.substring(index+Espaco.length(),FraseComEspaco.length());
sb.append(lastbit); FraseComEspaco = sb.toString();
from = index+Espaco.length();
}
else{
break;
}
}
return FraseComEspaco;
}
[/code]
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
[quote]ow pessoal
a duvida é relativamente simples
exibir a variável “quilometragem” dentro de uma StringItem que está dentro do Form “resposta”
[/quote]
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
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.
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
Ae é que tá Jaison
ele num me traz nenhum erro
aparece do display do emulador aquela msg
e no console aparece isso:
[quote]Warning: To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.
[/quote]
por isso penso que é algo relacionado a uma configuração de segurança, sei lá
abrass
[quote=guigavieira]Ae é que tá Jaison
ele num me traz nenhum erro
aparece do display do emulador aquela msg
e no console aparece isso:
[quote]Warning: To avoid potential deadlock, operations that may block, such as
networking, should be performed in a different thread than the
commandAction() handler.
[/quote]
por isso penso que é algo relacionado a uma configuração de segurança, sei lá
abrass[/quote]
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:
Cidade Origem:
<i>Jaragua do Sul</i>
<br>
Cidade Destino:
<i>Joinville</i>
<br>
<b>48km<b>
<br>
<b>48min<b>
no meu código, a seguir, peço somente a quilometragem (48km), mas a variável quilometragem retorna null
[code] public class Conecta extends Thread{
HttpConnection connection = null;
InputStream is = null;
OutputStream os = null;
StringBuffer stringBuffer = new StringBuffer();
StringItem stresposta = null;
public void run(){
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","20 Jan 2001 16:19:14 GMT");
connection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Confirguration/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;
}
[/code]
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
[code]
// método que efetua a conexão
public void run() {
// Faz uso do método replaceall para que as variáveis destino e origem possam ser usadas na url
destino = 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;
StreamConnection SC = null; //Cria uma nova StreamConnection
InputStream IS = null; //Cria uma nova InputStream
StringBuffer SB = new StringBuffer(); //Cria uma nova StringBuffer
try {
SC = (StreamConnection)Connector.open(url); //Faz a conexão com a url
IS = SC.openInputStream(); //Abre a entrada de dados para o celular
int ch;
while((ch = IS.read()) != -1) { //Enquanto o valor de ch for diferente de -1
SB.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údo
if(IS != null) { // Se a entrada de dados estiver aberta
IS.close(); // Fecha a entrada de dados
}
if(SC != null) { // Se a conexão estiver aberta
SC.close(); //Fecha a conexão
}
} catch (Exception exc) { //Se não for possível conectar
System.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 util
public void corte(){
int index,lastindex; // cria as variáveis do tipo int index e lastindex para a contagem dos caracteres
index=conteudo.indexOf("<b>"); // atribui que index ira começar a partir do <b> do código html
index=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 String
index=conteudo.indexOf("<b>",lastindex); // define o index como o proximo <b> depois de lastindex
index=index+3; //index recebe 3 pra pular <b>
lastindex=conteudo.indexOf("<b>",index);// define lastindex como o proximo <b> depois do index
str_tempo.setText(conteudo.substring(index, lastindex)); //seta no String item o conteudo entre index e lastindex
}
// Método de Replace ALL
public static String replaceAll(String FraseComEspaco, String Espaco,String SemEspaco){
int from = 0;
StringBuffer sb = new StringBuffer();
int index = -1;
while(true){
index = FraseComEspaco.indexOf(Espaco,from);
if(index!=-1){
sb = new StringBuffer();
String upto = FraseComEspaco.substring(0,index);
sb.append(upto+SemEspaco);
String lastbit = FraseComEspaco.substring(index+Espaco.length(),FraseComEspaco.length());
sb.append(lastbit); FraseComEspaco = sb.toString();
from = index+Espaco.length();
}
else{
break;
}
}
return FraseComEspaco;
}[/code]