Имя: Пароль:
IT
Админ
HTTP-запрос
0 Сергей Д
 
10.12.12
16:45
Доброго всем дня
Отправляю http-запрос multipart/form-data.
Судя по анализу формы, требуется передать следующие параметры:
_target3 = 0
requestData = программно формируемый html-код
requestXML = программно формируемый xml
requestXMLSig = '' (пустая строка)
formAction = 0
Формирую текст запроса следующим образом:

const
url='https://...';
boundary='1BEF0A57BE110FD467A';
CRLF=#10#13;
var
HTTPSend:THTTPSend;
requestData,requestXML:string;
content:AnsiString;
begin
...
HTTPSend.MimeType:='multipart/form-data; boundary='+boundary;
{параметры запроса}
content:='';
// _target3
content:=content
         +'—'+boundary+CRLF
         +'Content-Disposition: form-data; name="_target3";'+CRLF
         +CRLF
         +'0'+CRLF;
//          +'—'+boundary+'—'+CRLF;
// requestData
content:=content
         +'—'+boundary+CRLF
         +'Content-Disposition: form-data; name="requestData";'+CRLF
         +'Content-Type: text/html'+CRLF
         +CRLF
         +requestData+CRLF;
//          +'—'+boundary+'—'+CRLF;
// requestXML
content:=content
         +'—'+boundary+CRLF
         +'Content-Disposition: form-data; name="requestXML";'+CRLF
         +'Content-Type: text/xml'+CRLF
         +CRLF
         +requestXML+CRLF;
//          +'—'+boundary+'—'+CRLF;
// requestXMLSig
content:=content
         +'—'+boundary+CRLF
         +'Content-Disposition: form-data; name="requestXMLSig";'+CRLF
         +CRLF
         +''+CRLF;
//          +'—'+boundary+'—'+CRLF;
// formAction
content:=content
         +'—'+boundary+CRLF
         +'Content-Disposition: form-data; name="formAction";'+CRLF
         +CRLF
         +'0'+CRLF;
//          +'—'+boundary+'—'+CRLF;
// завершаем тело запроса
content:=content
         +'—'+boundary+'—'+CRLF+CRLF;
// размер данных
content:='Content-Length: '+inttostr(length(content))+CRLF+content;
//
HTTPSend.Document.Write(PAnsiChar(content)^,Length(content));
{ запрос на сервер }
HTTPSend.HTTPMethod('POST',url);
...
end;

Сервер принимает запрос, возвращает код ответа 200, но страницу возвращает не ту что нужно. При заполнении страницы через сайт запрос уходит нормально.
Вопросы:
1. Правильно ли формируется текст запроса?
2. Нужно ли каждый параметр завершать строкой '—'+boundary+'—'+CRLF или она должна идти 1 раз в конце запроса? (собственно, пробовал и так, и так - результат один и тот же)
1 sda553
 
10.12.12
17:04
а нюхальщико подсмотреть?
2 Сергей Д
 
10.12.12
18:11
(1) Не получается, это https-запрос
3 sapphire
 
10.12.12
18:15
(0)  Отладку tcp-ip не предлагать?
4 Сергей Д
 
10.12.12
18:32
(3) А можно подробнее?
ЗЫ Ногами не пинать, первый раз такими вещами занимаюсь
2 + 2 = 3.9999999999999999999999999999999...