Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Передача данных


Автор: DenWPF 21.2.2010, 14:38
Столкнулся с какой то странной передачей данных.
тип multipart/form-data

вот такое передает браузер...

Код

Content-Type: multipart/form-data; boundary=---------------------------23281168279961
Content-Length: 2097 -----------------------------23281168279961 
Content-Disposition: form-data; name="my_post_key" d52ffd94bed1f41fd2db3a5521f14f4f -----------------------------23281168279961 
Content-Disposition: form-data; name="subject" RE:  -----------------------------23281168279961 
Content-Disposition: form-data; name="icon" -1 -----------------------------23281168279961 
Content-Disposition: form-data; name="message_new" mesmesmes -----------------------------23281168279961 
Content-Disposition: form-data; name="message" mesmesmes -----------------------------23281168279961 
Content-Disposition: form-data; name="postoptions[subscriptionmethod]" -----------------------------23281168279961 
Content-Disposition: form-data; name="submit" Post Reply -----------------------------23281168279961 
Content-Disposition: form-data; name="action" do_newreply -----------------------------23281168279961 
Content-Disposition: form-data; name="replyto" -----------------------------23281168279961 
Content-Disposition: form-data; name="posthash" c958cf9b85a30aaa71415ebb41021c72 -----------------------------23281168279961 
Content-Disposition: form-data; name="attachmentaid" -----------------------------23281168279961 
Content-Disposition: form-data; name="attachmentact" -----------------------------23281168279961 
Content-Disposition: form-data; name="quoted_ids" -----------------------------23281168279961 
Content-Disposition: form-data; name="tid" 250855 -----------------------------23281168279961 



а мне как передать??
это всё как одна строка?

Автор: nmn 21.2.2010, 17:03
преобразовать строку к нужной кодировке Encoding.GetEncoding(...).GetBytes(...) и записать в поток запроса HttpWebRequest, поставить значение HttpWebRequest.ContentType равным multipart/form-data

Автор: DenWPF 21.2.2010, 17:53
Код

string formDataBoundary = " ---------------------------23281168279961";

string startBoundary = " Content-Disposition: form-data; name=\"";

string contentType = "multipart/form-data; boundary=" + formDataBoundary;
string textRequest = "Content-Disposition: form-data; name="my_post_key" d52ffd94bed1f41fd2db3a5521f14f4f -----------------------------23281168279961 
Content-Disposition: form-data; name="subject" RE:  -----------------------------23281168279961 
Content-Disposition: form-data; name="icon" -1 -----------------------------23281168279961 
Content-Disposition: form-data; name="message_new" mesmesmes -----------------------------23281168279961 
Content-Disposition: form-data; name="message" mesmesmes -----------------------------23281168279961 
Content-Disposition: form-data; name="postoptions[subscriptionmethod]" -----------------------------23281168279961 
Content-Disposition: form-data; name="submit" Post Reply -----------------------------23281168279961 
Content-Disposition: form-data; name="action" do_newreply -----------------------------23281168279961 
Content-Disposition: form-data; name="replyto" -----------------------------23281168279961 
Content-Disposition: form-data; name="posthash" c958cf9b85a30aaa71415ebb41021c72 -----------------------------23281168279961 
Content-Disposition: form-data; name="attachmentaid" -----------------------------23281168279961 
Content-Disposition: form-data; name="attachmentact" -----------------------------23281168279961 
Content-Disposition: form-data; name="quoted_ids" -----------------------------23281168279961 
Content-Disposition: form-data; name="tid" 250855 -----------------------------23281168279961"






Код

            // Преобразуем запрос из строки в byte[]
            byte[] byteArray = Encoding.UTF8.GetBytes(textRequest);

            // Поулчаем класс запроса
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);

            // Заполняем параметры запроса
            request.Credentials = CredentialCache.DefaultCredentials;
            request.Method = "POST";
            request.Headers.Add("Cookie", cookie);

            request.ContentLength = textRequest.Length;
            request.ContentType = contentType;


вот эту часть тоже надо в textRequest ?
Код

Content-Type: multipart/form-data; boundary=---------------------------23281168279961
Content-Length: 2097 -----------------------------23281168279961 

Автор: nmn 21.2.2010, 18:03
Content-Type: multipart/form-data; boundary=---------------------------23281168279961
это заголовок типа данных его в ContentType

Content-Length: 2097 -----------------------------23281168279961 
это длина данных, по идее он должен ее сам расчитать

Автор: DenWPF 21.2.2010, 23:19
так куда мне это писать? сам врдяли расчитает

Автор: nmn 22.2.2010, 00:33
проверь, в чем проблема? если сервер примет данные то все нормально

Автор: DenWPF 22.2.2010, 23:37
ну а если он примет и не чего не дает...

Автор: nmn 23.2.2010, 09:16
http сервер в любом случае должен вернуть результат запроса

Автор: DenWPF 23.2.2010, 23:29
мне вот такую ошибку вернули" Can not upload file - Too large for php post_max_size directive. Please press the back button."

Автор: Kano 23.2.2010, 23:31
DenWPF, сервер не может принять такой большой файл.

Автор: DenWPF 24.2.2010, 00:03
за перевод спасибо, но вообще то не передаю туда файл.

Автор: Kano 24.2.2010, 00:07
Тут даже не важно файл или не файл, длина POST-запроса должна быть меньше того, что прописана в конфиге PHP.

Автор: DenWPF 24.2.2010, 00:22
23281168279961 - откуда это число берется?

ээ ну размер я посмотрел он меньше чем браузер передает

Автор: Kano 24.2.2010, 00:29
Цитата(DenWPF @  24.2.2010,  00:22 Найти цитируемый пост)
23281168279961 - откуда это число берется?

— это псевдослучайный разделитель, который генерируется отправителем.

Цитата(DenWPF @  24.2.2010,  00:22 Найти цитируемый пост)
ээ ну размер я посмотрел он меньше чем браузер передает 

— какой из? Размер в php.ini или отправляемый твоей программой?

Автор: DenWPF 24.2.2010, 00:41
отправленный браузером и отправленный моей программой

Автор: Kano 24.2.2010, 01:26
У тебя textRequest неправильный, т.е. переводы строк упущены. Хотя ... Странно, конечно.

Автор: nmn 24.2.2010, 01:53
переводы должны быть \r\n

Автор: DenWPF 24.2.2010, 08:51
дайте мне шаблон которые должен быть.

Автор: DenWPF 24.2.2010, 09:17
всем спасибо, вы были правы.
http://stackoverflow.com/questions/566462/upload-files-with-httpwebrequest-multipart-form-data
твет

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)