Отправка массива байт через WebRequest method="POST" - C#

Узнай цену своей работы

Формулировка задачи:

Уже голова кругом от мыслей что правда , что домыслы. Значит моя точка зрения или в чем я вижу проблему : Чем отличается отправка данных через POST и GET , тем что в 1 случае она скрытая , а во втором в открытом виде.И на этом список самых очевидных отличий заканчивается. Что бы отправить данные по методу POST , нужно сформировать такую же строку запроса что и если бы мы делали для GET.Затем , скажем в UTF-8 , записать байты строки в POST - поток. Ну для большей ясности кусок из моего проекта:
        static WebRequest CreateRequest(PostDate content)
        {
            var result = WebRequest.Create(Adress);
            result.Method = "POST";
            //Generate content in support type
            var builderRequest = new StringBuilder();
            foreach (var pair in content) //pair представляет строку вида name=anatoly
                builderRequest.Append(pair).Append('&');
            //удаляем ненужный разделитель в конце
            builderRequest.Remove(builderRequest.Length - 1, 1);
            //using static System.Text.Encoding
            byte[] date = UTF8.GetBytes(builderRequest.ToString());
            //Write content
            result.ContentLength = date.Length;
            using (var requestStream = result.GetRequestStream())
                requestStream.Write(date, 0, date.Length);
            return result;
        }
А теперь проблема : все что я записываю в поток (я так думаю , конечно , не утверждаю) это байты представляющие строку запроса , которая содержит некоторую метаинформацию(кодировку) и сами передаваемые данные. Если записать HashBytes= , а затем просто записать байты хеша , все-таки есть же вероятность что некоторые байты будут восприняты как служебные символы и появятся новые элементы и вообще всякая билеберда...И я не могу придумать что мне с этим делать. Обычно в строке браузера служебные символы , если они являются частью name=

value

то они замещаются специальными , там типо %23 и др.Но не прописывать же мне вручную эдакий нормализатор , есть же готовое что-то в NetFrameworkе на этот счет?? Вобщем если есть у кого идеи излагайте , только этот пост - запрос будет разбирать php-скрипт. И как задавать кодировку передаваемых данных?
Решил отправлять сериализованый json-объект. Осталось только проблемка. Глупый json записывает байт в виде строчных цифр...То есть если один символ = 1байту , то все байты со значением выше 100 будут весить в 3 раза больше , короче говоря отправка массива данных таким образом дает не нужный прирост в весе , где-то в 2 раза. Вот если представлять байт в виде символа ASCIII , то другое дело , но некоторые байты отображаются "?" и имеют одинаковый код.Хоть изначально байты были и разные. Короче нужно найти в Unicode позицию где после нее идет 256 печатных кодов-символов и выполнять смещение изначальных байт на эту позицию , только тогда массив будет уже не бит , а целых чисел...Но не суть , объем все равно станет меньше.

Решение задачи: «Отправка массива байт через WebRequest method="POST"»

textual
Листинг программы
NameValueCollection queryString = System.Web.HttpUtility.ParseQueryString(string.Empty);
 
queryString["key1"] = "value1";
queryString["key2"] = "value2";
 
return queryString.ToString(); // Returns "key1=value1&key2=value2", all URL-encoded

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы