Caros colegas, sou novo aqui neste forum, porém as duvidas são muitas:
estou desenvolvendo uma aplicação que recebe os dados do Servlet e grava em um RMS, porém ao receber os dados do Servlet com o DataInputStream aparece que ele recebe somente uma quantidade limitada de dados, neste caso ele nao esta fazendo toda a leitura dos dados recebidos do servlet, abaixo esta o servlet e o meu Midlet
Minha classe j2me Thread que faz a conexao e recebe os dados so Servlet
[code]import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.microedition.io.HttpConnection;
public class DownloadAtualizacao implements Runnable {
private String dados1;
private String url;
private InputStream inStr;
private InputStream iStrm;
private HttpConnection http;
public String getDados1() {
return dados1;
}
public void setDados1(String dados1) {
this.dados1 = dados1;
}
public DownloadAtualizacao(String endereco) {
this.url = endereco;
}
public void conectar() throws IOException {
http = (HttpConnection) Connector.open(url);
System.out.println("conexao aberta");
http.setRequestMethod(HttpConnection.GET);
iStrm = http.openInputStream();
DataInputStream dt = new DataInputStream(inStr);
System.out.println("mostrando dados");
int length = (int) http.getLength();
String str;
if (length != -1) {
byte servletData[] = new byte[length];
iStrm.read(servletData);
str = new String(servletData);
System.out.println("dados: " + str);
System.out.println(dt.readUTF());
} else {
System.out.println(length);
System.out.println(dt.readUTF());
}
}
public void run() {
try {
this.conectar();
} catch (IOException e) {
e.printStackTrace();
}
}
public final static String[] split(String texto) {
char separador = '|';
if (texto == null) {
return null;
}
int tamanhoTexto = texto.length();
if (tamanhoTexto == 0) {
return null;
}
Vector lista = new Vector();
int i = 0;
int start = 0;
boolean permite = false;
while (i < tamanhoTexto) {
// percorre caracter a caracter tentando encontrar o separador
// se encontrar o separador no primeiro carcater ele ignora
if (texto.charAt(i) == separador) {
if (permite) {
// pegando o pedaço da string entre os separadores
lista.addElement(texto.substring(start, i).trim());
permite = false;
}
// recebo a posição de onde posso começar a pegar os caracteres,
// até a próxima vez que encontrar o separador ou terminar os
// caracteres
start = ++i;
continue;
}
permite = true;
i++;
}
if (permite) {
// guardando a informação em uma posição da lista
lista.addElement(texto.substring(start, i).trim());
}
// convertendo o vetor em arrray
String[] listaElementos = new String[lista.size()];
lista.copyInto(listaElementos);
return listaElementos;
}
}
[/code]
Meu Servlet que filtra os dados do bd e exibe no browser:
[code]package br.com.cooper;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ExibeJson extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -3625526568409716004L;
public ExibeJson() {
}
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String s;
Campos campos = new Campos();
ConectaBd con = new ConectaBd();
con.Conecta();
String SQL = "select * from fp02t3 where fp02situ='A' and fp02funcao LIKE 'MOTORISTA - CAMINHAO%' order by fp02nom";
con.executaSQL(SQL);
String comando = request.getParameter("comando");
if (comando.equals("AtualizaMotorista")) {
response.setContentType("text/plain");
PrintWriter out = response.getWriter();
try {
while (con.resultset.next()) {
campos.setCodigo(con.resultset.getString("fp02cod"));
campos.setNome(con.resultset.getString("fp02nom"));
s = campos.getCodigo() + "|" + campos.getNome() + "|";
// out.print(s);
out.println(s);
System.out.println(s);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ArrayIndexOutOfBoundsException e) {
System.out
.println("ERRO: ArrayIndexOutOfBoundsException: " + e);
} finally {
out.close();
}
}
}
}
[/code]
PRECISO URGENTE DE UMA AJUDA …
pois o midlet somente lista a metade dos dados que se encontra na tabela, e o Servlet exibe todos eles na tela.
o que pode estar acontecendo?
será que a String que recebe DataInputStream tem limites de caracteres?
ME AJUDEMMM PELO AMOR DE DEUUSS!!