Enviar uma String enorme para um Servlet

Olá pessoal,

Preciso mandar uma String enorme (uma conversa de chat) para um Servlet, que vai gravá-la em banco. Estou usando para tal uma requisição POST, da seguinte maneira:

/**
     * AuthServlet?cmd=gravarLog&cd_atendente=""&nm_cliente=""&email=""
     */
    public boolean gravarLog(String log, int cod, String cliente, String mail) {
        
        try {
            
            URL url = new URL(servidor.getServidorAutenticacao() +
                    "?cmd=gravarLog&cod_atendente=" + cod + "&nm_cliente=" +
                    URLEncoder.encode(cliente, "UTF-8") + "&email=" +
                    URLEncoder.encode(mail, "UTF-8"));
            URLConnection conn = url.openConnection();
            
            conn.setDoOutput(true);
            conn.setDoInput(true);
            conn.setAllowUserInteraction(false);
            
            DataOutputStream dostream = new DataOutputStream( conn.getOutputStream() );
            
            // POST
            dostream.writeBytes( log );
            dostream.close();
            
            // Ler Resposta
            BufferedReader br = new BufferedReader( new InputStreamReader(conn.getInputStream()) );
            StringBuffer buffer = new StringBuffer();
            String line;
            while ((line = br.readLine())!=null) {
                buffer.append(line);
            }
            
            String resposta = buffer.toString();
            
            javax.swing.JOptionPane.showMessageDialog( null, resposta );
            
            if ( resposta.equalsIgnoreCase("ok") )
                return true;
            else
                return false;
            
        } catch (Exception ex) {
            console.append( ex.toString() + ": " + ex.getMessage() + "\n");
        }
        
        return false;
    }

No Servlet, eu recebo a String com o seguinte código:

BufferedReader br = request.getReader();
        StringBuffer buf = new StringBuffer();
        String line;
        while ( (line = br.readLine()) != null ) {
            buf.append(line);
        }
        String log = buf.toString();

A String “log” está sempre vazia - “”.

Agradeço desde já a ajuda de vocês.
Rodrigo.

Será que o problema é tão besta que ninguém se dignou a responder?

Ja tentou usar um packet sniffer (tipo o Ethereal) pra ver o que ta mesmo passando pelo HTTP? Tenho a impressao de que tem alguma coisa errada no envio

Não creio que o problema está no tamanho da String. Já fiz testes com textos de 4 a 8 mbs e não tive nenhum problema.

Kra, vc pode mandar o trecho de código que vc usou, tanto da requisição (envio para o POST) quanto do recebimento dos dados (no Servlet)?

<form action="MinhaAction.action" method="post">
<textarea name="textao">[texto muito grande aqui]</textarea>
</form>

public class MinhaAction extends ActionSupport
{
    private String textao;

    public String execute()
    {
        logger.debug( textao );
        return SUCCESS;
    }

    public void setTextao( String textao )
    {
        this.textao = textao;
    }
}

Pronto hehe usando WebWork.

Sei que não ajudou em nada, mas o que quis dizer é que não precisei fazer nada demais, portanto o erro deve estar em outro lugar. Já tentou com strings menores?

Aliás, nem entendi como você está pegando o valor do campo no servlet. Não basta um simples request.getParameter( “name do input” )?

Hein kra, eu tô fazendo a requisição a partir de um java client. Mas consegui resolver o problema, o negócio era mandar a query URL (?cmd=""&param1=""&textoMuitoGrande="") pelo DataOutputStream.

Mesmo assim, valeu aí pela ajuda.