Urlencode большое количество текста в .net 4 клиент C # - PullRequest
0 голосов
/ 26 октября 2011

Каков наилучший способ urlencode (экранирования) большой строки (от 50 до 200 тыс. Символов) в клиентском профиле .net 4?

System.Net.Uri.EscapeDataString () ограничен 32766 символов .

HttpUtility.UrlEncode недоступен в клиенте .net 4.

Закодированная строка должна передаваться как значение параметра в httprequest в виде сообщения.

(Кроме того, есть ли в SO профиль тега .net-4-client?)

Ответы [ 3 ]

0 голосов
/ 26 октября 2011

Вы можете вручную закодировать все это с помощью StringBuilder, хотя это увеличит сумму перевода в три раза:

string EncodePostData(byte[] data)
{
    var sbData = new StringBuilder();
    foreach(byte b in data)
    {
        sbData.AppendFormat("%{0:x2}", b);
    }
    return sbData.ToString();
}

Однако стандартный метод - просто указать тип MIME и заголовок Content-Lengthотправить данные в сыром виде.

0 голосов
/ 26 октября 2011

Поскольку строка, закодированная в URL, является просто закодированным символом, это означает, что если вы разбили строку и закодировали две части, вы можете объединить их, чтобы получить закодированную версию исходной строки.

Так что просто просматривайте и кодируйте 30 000 символов за раз, а затем соединяйте все эти части вместе, чтобы получить закодированную строку.

Я повторю мнение других, что вам может быть лучше с типом содержимого multipart / form-data. http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4 объясняет различия в случае, если вы не знаете. Какой из этих двух вариантов вы выберете, не будет иметь большого значения для пункта назначения, поскольку цель должна полностью понимать оба объекта.

0 голосов
/ 26 октября 2011

Я бы предложил использовать формат MIME для публикации ваших данных. Не нужно кодировать (кроме, может быть, кодировки base64), и вы будете ограничены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...