2009-05-08 5 views
1

Я хотел бы послать HTML строку с запросом GET, как это с апачей HttpClient:Как отправить HTML как параметр GET-Request?

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

Это не работает в данный момент, я думаю, что его проблему кодирования. У вас есть идеи, как это сделать?

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

Это не удается с org.apache.commons.httpclient.NoHttpResponseException: The server localhost failed to respond. Если я заменил "<html>" на «test ..», он отлично работает.

EDIT

швы быть проблемой длины URL после кодирования, сервер оленья кожа, за исключением таких длинных URL-адресов. Отправка его как POST решает проблему.

ответ

3

Попробуйте использовать кодировку URL для форматирования вашей строки html.

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

Спасибо. Теперь строка выглядит закодированной, но сервер doenst отвечает на нее. Попытка того же в браузере вручную doenst что-то делать. Существует ли ограничение длины URL-адресов в веб-серверах? – Mork0075

+0

@ Mork0075 В спецификации HTTP не указаны ограничения по длине, но если вы немного походите на Google, вы обнаружите, что реализация браузера и сервера накладывает разные ограничения по длине, поэтому, безусловно, это нужно учитывать. – Daan

+0

Я сделал некоторую дельта-отладку и после обрезки строки примерно до 2000 символов, она работает. Но мне хотелось бы хранить информацию на сервере, которая превышает это. Хава, у тебя есть идеи? – Mork0075

2

Я бы с кодировкой base64 и, возможно, какое-то сжатие до того, в зависимости от длины вашего содержания данного:

RFC 2068 состояния: серверы должны будьте осторожны в зависимости от длины URI выше 255 байт, потому что некоторые старые реализации клиента или прокси-сервера могут неправильно поддерживать эти длины. Спецификация длины URL-адреса не определяет минимальную или максимальную длину URL-адреса, но реализация зависит от браузера. В Windows: Opera поддерживает ~ 4050 символов, IE 4.0+ поддерживает ровно 2083 символа, Netscape 3 -> 4.78 поддерживает до 8192 символов, прежде чем вызывать ошибки при выключении, а Netscape 6 поддерживает ~ 2000 перед возникновением ошибок при запуске.