Pergunta

Gostaria de enviar uma cadeia html com um pedido GET assim com Apaches HttpClient:

http://sample.com/?html=<html><head>...

Esta não funciona no momento, eu acho que é um problema de codificação. Você tem alguma idéia de como fazer isso?

method.setQueryString(new NameValuePair[] {new NameValuePair("report", "<html>....")});
client.executeMethod(method)

Esta falha com org.apache.commons.httpclient.NoHttpResponseException: The server localhost failed to respond. Se eu substituir "<html>" por "teste .." ele funciona bem.

Editar

Ele emendas a ser um problema do comprimento do URL após a codificação, o does not servidor, exceto essas URLs longos. Enviando-o como POST resolve o problema.

Foi útil?

Solução

Tente usar URL Encoding para formatar a seqüência de html em primeiro lugar.

String yourHtmlString = java.net.URLEncoder.encode("<html>....");
method.setQueryString(new NameValuePair[] {new NameValuePair("report", yourHtmlString)});

Outras dicas

Eu iria com codificação Base64 e talvez algum tipo de compressão antes que dependendo do comprimento do seu conteúdo dado:

RFC 2068 afirma: Os servidores devem ser cautelosos sobre dependendo comprimentos URI acima de 255 bytes, porque alguns clientes mais antigos ou implementações de proxy podem não suportar adequadamente estes comprimentos. A especificação de comprimento URL não dita um comprimento máximo de URL mínimo ou, mas a implementação varia de acordo com browser. No Windows: Opera suportes ~ 4050 caracteres, IE 4.0+ suporta exatamente 2.083 caracteres, Netscape 3 -> 4,78 suporte para até 8192 caracteres antes de causar erros no shut-down, e Netscape 6 suportes ~ 2000 antes causando erros no start-up.

HTML cordas conter caracteres que devem ser URL codificado. Leia aqui .

Você poderia fazer a codificação com UrlUtils.simpleFormUrlEncode

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top