powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / POST запрос multipart/form-data
8 сообщений из 8, страница 1 из 1
POST запрос multipart/form-data
    #39637765
JavaStudent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно загрузить данные на сервер : Описание, что хотят на входе:

https://zakupki.gov.ru/pgz/services/upload/upload HTTP/1.1

Content-Type: multipart/form-data; boundary=---------------------------7db10b11c0824
Host: zakupki.gov.ru
Content-Length: (размер содержимого)
Connection: Keep-Alive
Cache-Control: no-cache

-----------------------------7db10b11c0824
Content-Disposition: form-data; name="login"

(имя пользователя)
-----------------------------7db10b11c0824
Content-Disposition: form-data; name="password"

(пароль)
-----------------------------7db10b11c0824
Content-Disposition: form-data; name="clientType"

(тип клиента)
-----------------------------7db10b11c0824
Content-Disposition: form-data; name="document"; filename="(имя файла)"
Content-Type: text/xml

(XML-документ)
-----------------------------7db10b11c0824
Content-Disposition: form-data; name="signature"; filename="(имя файла)"
Content-Type: application/octet-stream

(Электронная подпись)
-----------------------------7db10b11c0824


Все писать в setRequestHeader ? Где заканчивается заголовок и начинается тело?

Content-Type: text/xml
Сюда забрасываю строки xml файла? Содержит русские буковки, что с ними будет на сервере?

Content-Type: application/octet-stream
Сюда забрасываю строку электронной подписи?


Если нет в заголовке, то и не нужно?
oHttp.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"

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


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
Private Sub Кнопка0_Click()
Dim strPOST As String
Dim boundary As String
Dim UserName As String
Dim Password As String
Dim XMLHTTP As Object
Dim headers

boundary = "---------------------------7db10b11c0824"
UserName = "12345"
Password = "12345"

' Собираю тело

strPOST = boundary & vbCrLf
strPOST = strPOST & "Content-Disposition: form-data; name=""login""" & vbCrLf & vbCrLf & UserName & vbCrLf
strPOST = strPOST & boundary & vbCrLf
strPOST = strPOST & "Content-Disposition: form-data; name=""password""" & vbCrLf & vbCrLf & Password & vbCrLf
strPOST = strPOST & boundary & vbCrLf
strPOST = strPOST & "Content-Disposition: form-data; name=""clientType""" & vbCrLf & vbCrLf & "bank" & vbCrLf
strPOST = strPOST & boundary & vbCrLf
strPOST = strPOST & "Content-Disposition: form-data; name=""document""" & ";filename=c:\xml\1.xml" & vbCrLf
strPOST = strPOST & "Content-Type :text/xml" & vbCrLf & vbCrLf
strPOST = strPOST & [color=green]???? Здесь не знаю, что писать. Код xml? А как быть с двойными кавычками...? [/color]
strPOST = strPOST & boundary & vbCrLf
strPOST = strPOST & "Content-Disposition: form-data; name=""signature""" & ";filename=c:\xml\1.sig" & vbCrLf
strPOST = strPOST & "Content-Type :application/octet-stream" & vbCrLf & vbCrLf
strPOST = strPOST & ??? Тут куча символов электронной подписи & vbCrLf  
strPOST = strPOST & boundary &"--"& vbCrLf   [color=green]' Нужны ли здесь в конце --[/color]
strPOST = strPOST & "--" & boundary & "--" & vbCrLf


[color=green]'Формирую заголовок[/color]

Set XMLHTTP = CreateObject("MSXML2.Msxml2.XMLHTTP.6.0")
XMLHTTP.Open "POST", "https://zakupki.gov.ru/pgz/services/upload", True
[color=green]' Нужен "User-Agent"? Не просят...[/color]
XMLHTTP.setRequestHeader "Content-Type", "multipart/form-data; boundary=---------------------------7db10b11c0824"
XMLHTTP.setRequestHeader "Content-Length", Len(strPOST)
XMLHTTP.setRequestHeader "Cache-Control", "no-cache"
XMLHTTP.setRequestHeader "Connectiont", "Keep-Alive"


XMLHTTP.send strPOST

  Dim t!
    t = Timer + 10
    Do
      DoEvents
      headers = XMLHTTP.getAllResponseHeaders()
    If Len(headers) Then Exit Do
    Loop While Timer < t
    On Error GoTo 0
    MsgBox headers

Set XMLHTTP = Nothing
End Sub
...
Рейтинг: 0 / 0
POST запрос multipart/form-data
    #39638235
JavaStudent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
multipart/form-data
Данные не кодируются. Это значение применяется при отправке файлов.

источник: http://htmlbook.ru/html/form/enctype
...
Рейтинг: 0 / 0
POST запрос multipart/form-data
    #39638239
JavaStudent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Отсылка такого POST запроса c помощью PHP

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
<?php
$host="test.ru"; // с каким хостом соединяемся
$file_send="a.txt"; // файл который нужно отправить, можно указать абсолютный или относительный путь до файла
$boundary = md5(rand(0,32000)); // создаем разделитель, md5 на основе случайного числа
$filesize = filesize($file_send); // получаем размер пересылаемого файла. если будете пересылать не файл, а текст, то здесь нужно посчитать количество символов текста

// создаем код для отправки двух переменных
$data= "--".$boundary."\r\n"; // разделитель
$data.="Content-Disposition: form-data; name=\"mass[qwe]\"\r\n\r\n"; // имя перемнной
$data.="значение переменной mass[qwe]\r\n"; // значение переменной
$data.="--".$boundary."\r\n"; // разделитель, начало следующего блока данных
$data.="Content-Disposition: form-data; name=\"var\"\r\n\r\n"; // имя следующей переменной
$data.="значение переменной var\r\n"; // ее значение

// создаем заголовки файла
$head_file="--".$boundary."\r\n"; // разделитель
$head_file.="Content-Disposition: form-data; name=\"var_file\"; filename=\"".$file_send."\"\r\n"; // имя переменной с файлом и имя пересылаемого файла
$head_file.="Content-Type: ".mime_content_type($file_send)."\r\n\r\n"; // mime-type файла. данная функция определения типа файла может не работать на многих серверах, поэтому ищите другой способ указания типа файла, можете вручную прописывать тип, например application/octet-stream

// считаем размер данных. размер нужно считать всего, что идет после основных заголовков, вместе с разделителями и всем остальным
// складываем данные с переменными, заголовки файла, размер файла который будет вставлен позже и плюс завершающий разделитель
$contentlength = strlen($data) + strlen($head_file) + $filesize + strlen("--".$boundary."--\r\n");

// теперь создаем основные заголовки, сам запрос
$headers = "POST /test/file.php HTTP/1.0\r\n"; // путь до скрипта, который принимает данные
$headers.="Host: ".$host."\r\n";
$headers.="Referer: ".$host."\r\n";
$headers.="User-Agent: Opera\r\n";
$headers.="Content-type: multipart/form-data, boundary=".$boundary."\r\n"; // тип передаваемых данных и разделитель
$headers.="Content-length: ".$contentlength."\r\n\r\n";  // размер всех данных


if(!$fp = fsockopen($host, 80))  exit; // открываем соединение
fputs($fp, $headers); // посылаем основные заголовки в открытый поток
fputs($fp, $data); // посылаем переменные
fputs($fp, $head_file); // посылаем заголовки файла и ниже отправим сам файл

$fp2 = fopen($file_send, "rb"); // открываем файл, который будет отправлять
while(!feof($fp2)) // начинаем читать этот файл
{
    $as=fgets($fp2, 2048); // читаем кусок файла
    fputs($fp, $as); // посылаем этот кусок файла в открытый поток
}
fclose($fp2); // закрываем файл, который прочитали и отправили в поток

fputs($fp, "\r\n--".$boundary."--\r\n"); // завершаем, отправляем закрывающий разделитель, указывающий на конец даных


// вывод ответа от скрипта
while($gets=fgets($fp,2048))
{
    print $gets;
}

fclose($fp); // закрыли поток.
?>
...
Рейтинг: 0 / 0
POST запрос multipart/form-data
    #39638296
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JavaStudent, Я уже несколько раз перечитываю Ваш топик , и никак не могу понять , что Вы пытаетесь сделать?
Эта ссылка , << https://zakupki.gov.ru/pgz/services/upload/upload >> , которую Вы привели , абсолютно не открывается .
Или Вы решили заняться хаккерством ?
Что касается скрипта PHP , который Вы выложили , так если я правильно понимаю , то они хранятся и обрабатываются на сервере . А Вы же , если я правильно понял , пытаетесь достучаться к серверу извне.
Может Вы более подробно обьясните задачу , что Вы пытаетесь сделать . Или может Вам нужно обратиться в подфорумы PHP и JavaScript ??? Это скорее их профиль.
А пока , или я дурак , или лыжи не едут , но лично я не могу вьехать в суть дела.
Может , если Вы разьясните ситуацию , и народ глядишь подтянется ???
Спасибо.
...
Рейтинг: 0 / 0
POST запрос multipart/form-data
    #39640510
JavaStudent
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMan, Мне сложно тебе объяснить. Если тебе это кажется хакерством))
Задачка вроде простая. Послать составной POST запрос. Что-то не срастается. Нужна любая информация.
...
Рейтинг: 0 / 0
POST запрос multipart/form-data
    #39640513
Прогер_самоучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JavaStudentDarkMan, Мне сложно тебе объяснить. Если тебе это кажется хакерством))
Задачка вроде простая. Послать составной POST запрос. Что-то не срастается. Нужна любая информация.Ну так и чеши со своей задачей в форум php раз такой умный, ага.
Понторезов тут и без тебя хватает.
...
Рейтинг: 0 / 0
POST запрос multipart/form-data
    #39640587
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JavaStudent
Задачка вроде простая. Послать составной POST запрос. Что-то не срастается. Нужна любая информация.
Хорошо , попробую дать Вам хоть какую нибудь информацию .
Вот пример запроса из Web браузера Ajax запроса с использованием JSON


Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
         $.ajax({
	   type:'POST',
	    url:'Путь_к_файлу.php',
	    dataType:'json',
	    data:JSON.stringify(Переменная_с_параметрами)
	    	})//End Ajax
	    .done(function(response){
	     console.log(response);		
	     Здесь что то происходит в случае ответа;  
	    }); //End Done




Все остальные запросы выполняются примерно по такому же принципу. Но я Вам уже писал , что Ваш запрос все равно обрабатывает на сервере файл PHP например .
Прежде всего Вы должны знать название этого файла и путь к нему и естесственно какие ему передавать параметры .
И второе , Вы так и не обьяснили , что Вы пытаетесь делать . Это Ваш сайт , или нет , если не Ваш , то владельцы сайта должны Вам дать всю информацию . А скорее всего у них должно быть организован процесс загрузки файлов или всякой информации на сайт программным способом .
Если это не так , и Вы пытаетесь загрузить что либо на сайт без ведома владельца , вот я и спросил , Вы пытаетесь упражняться в хакерстве?
Вот рекомендуемая литература.
1. AJAX и PHP. Разработка динамических веб-приложений
2. Разработка веб-приложений с помощью PHP и MySQL, 5-е издание
3. JavaScript и jQuery. Исчерпывающее руководство. 3-е издание
4. Javascript и jQuery. Интерактивная веб-разработка
Ну и как всегда Google Вам в помощь.
Надеюсь я предоставил Вам хоть какую нибудь информацию. Спасибо .
...
Рейтинг: 0 / 0
POST запрос multipart/form-data
    #39640600
DarkMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JavaStudent,

Да простят меня модераторы за рекламу , загляните сюда , здесь очень хорошо и подробно все описано .
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / POST запрос multipart/form-data
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]