Como enviar HTML como parâmetro GET-Request?
-
22-07-2019 - |
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.
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