|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.03.2008, 11:40 | #1 |
Регистрация: 30.06.2007
Сообщений: 4
|
HTTPS,SSL <-----Помогите разобраться
Воть....
procedure TForm1.Button1Click(Sender: TObject); var data: TIdMultiPartFormDataStream; red: TIdMultiPartFormDataStream; begin data := TIdMultiPartFormDataStream.Create; red := TIdMultiPartFormDataStream.Create; try data.AddFormField('request', req_type); data.AddFormField('id=', req_id ); data.AddFormField('checkid=',req_ch eckid); data.AddFormField('product=',req_pr oduct ); data.AddFormField('value=', req_value); data.AddFormField('account', req_account ); data.AddFormField('timeout=', req_timeout); data.AddFormField('cnfmode=', req_cnfmode ); red.AddFormField('X-Eport-Auth','point='+point+';'+'card='+ca rd+';'+'pin='+pin); red.AddFormField('X-Eport-Mode', '1' ); red.AddFormField('Content-Type','text/plain; charset=koi8-r'); IdHTTP1.IOHandler:=IdSSLIOHandlerSo cket1; IdSSLIOHandlerSocket1.SocksInfo:=Id http1.Socket.SocksInfo; { Call the Post method of TIdHTTP and read the result into TMemo } Memo1.Lines.Text := IdHTTP1.POST('https://dealer.e-port.ru/cp/fe',red+data); finally data.Free; end; end; Выдаёт Error connecting with SSL ================ Короче вот код на Перле --> Мне надо его перевести в Delphi помогите срочно надо!!!! use strict; use Net::SSLeay qw(post_https make_headers); ##### параметры подключения ##### # номер точки e-port my $point = 123; # номер карты e-port my $card = "249000-00000"; # пин-код карты e-port my $pin = "1234567890"; ##### исходные данные запроса операции ##### # тип запроса (OPERATION/CONFIRM/CANCEL) my $req_type = "OPERATION"; # идентификатор операции my $req_id = "12345"; # номер чека my $req_checkid = "12345"; # артикул товара из справочника(в данном случае - МТС ESPP) my $req_product = 4420; # объем сделки (в данном случае - 100 рублей) my $req_value = "100.00RUR"; # реквизиты л/с клиента, объединенные точкой с запятой # в данном случае ракуизит один - номер телефона my $req_account = "9161234567"; # тайм-аут запроса в синхронном режиме my $req_timeout = 15; # режим транзакции (0 - однофазный, 1 - двухфазный) my $req_cnfmode = 1; ##### Формирование запроса text/plain##### my $CRLF = "\r\n"; my $request = $req_type . $CRLF . "id=" . $req_id . $CRLF . "checkid=" . $req_checkid . $CRLF . "product=" . $req_product . $CRLF . "value=" . $req_value . $CRLF . "account=" . $req_account . $CRLF . "timeout=" . $req_timeout . $CRLF . "cnfmode=" . $req_cnfmode . $CRLF; print "=== Operation Request ===\n"; print $request; ##### формируем http-заголовки запроса ##### my $reqHeaders; # добавляем заголовок аутентификации $reqHeaders .= make_headers("X-Eport-Auth"=>"point=$point; card=$card; pin=$pin"); # добавляем признак синхронного режима $reqHeaders .= make_headers("X-Eport-Mode"=>"1"); # указываем кодировку сообщения и формат данных $reqHeaders .= make_headers("Content-Type"=>"text/plain; charset=koi8-r"); ##### обмениваемся данными с сервером ##### my $host = "dealer.e-port.ru"; my $port = "443"; my $uri = "/cp/fe"; my ($body, $status, %resHeaders) = post_https($host,$port,$uri,$reqHea ders,$request); # http-код ответа указывает на ошибку if($status ne 'HTTP/1.1 200 OK'){ print "HTTP ERROR: $status\n"; print "$body\n"; # http-код ответа 200 (успешно) }else{ # разбираем построчно my @lines = split(/\r\n/, $body); my $i = 0; # ответ по операции должен начинаться с ключевого слова "RESULT" die "Response: Bad format, RESULT required\n" unless $lines[$i++] eq 'RESULT'; # затем следуют обязательные параметры ответа в определенном порядке # идентификатор операции die "Response: Bad format, id required\n" unless $lines[$i++] =~ /^id=(.*)$/; my $res_id = $1; # код ответа die "Response: Bad format, code required\n" unless $lines[$i++] =~ /^code=(.*)$/; my $res_code = $1; # сообщение для разработчика/оператора системы die "Response: Bad format, omsg required\n" unless $lines[$i++] =~ /^omsg=(.*)$/; my $res_omsg = $1; # сообщение для клиента die "Response: Bad format, cmsg required\n" unless $lines[$i++] =~ /^cmsg=(.*)$/; my $res_cmsg = $1; # далее следуют необязательные параметры операции my ($res_time, $res_pmsg, $res_card, $res_pin); while( my $line = $lines[$i++]){ # дата/время операции на сервере if($line=~ /^time=(.*)$/){ $res_time = $1 # сообщение для печати }elsif($line=~ /^pmsg=(.*)$/){ $res_pmsg = $1 # номер карты e-port клиента }elsif($line=~ /^card=(.*)$/){ $res_card = $1 # пин-код карты e-port клиента }elsif($line=~ /^pin=(.*)$/){ $res_pin = $1 }else{ die "Response: Bad format\n"; } } # обрабатываем полученные данные print "=== Operation result ===\n"; print "id :" . $res_id . "\n"; print "code :" . $res_code . "\n"; print "omsg :" . $res_omsg . "\n"; print "cmsg :" . $res_cmsg . "\n"; print "time :" . $res_time . "\n"; print "pmsg :" . $res_pmsg . "\n"; print "card :" . $res_card . "\n"; print "pin :" . $res_pin . "\n"; } |
14.03.2008, 11:42 | #2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Библиотеки не те стоят
Тип ssl не правильно выставлен.
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
14.03.2008, 11:43 | #3 |
Регистрация: 30.06.2007
Сообщений: 4
|
|
14.03.2008, 11:53 | #4 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
Поиск вас недостоин?
http://www.programmersforum.ru/showthread.php?t=14571 http://www.programmersforum.ru/showthread.php?t=15070
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
14.03.2008, 12:05 | #5 | |
Регистрация: 30.06.2007
Сообщений: 4
|
Цитата:
Объясни пожалуиста как это!Напиши иходник неольшой пжалуста |
|
04.06.2008, 08:29 | #6 |
Регистрация: 30.05.2008
Сообщений: 6
|
Подобная проблема...
имеется (delphi6+indy9+библиотеки скачанные с http://www.programmersforum.ru/showthread.php?t=14571):
Код:
Код:
Access violation at address 00471AA9 in module 'ePort.exe'. Read of address 00000020. если использую Код:
Error connecting with SSL. кстати: приведенная выше реализация с red+data; даже не компилицца и ругается "[Error] main.pas(84): Incompatible types" помогите с реализацией или советом
Если туп как дерево, родишся баобабом... (с)
|
04.06.2008, 09:40 | #7 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
а Indy у вас какой версии ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
04.06.2008, 09:53 | #8 |
Регистрация: 30.05.2008
Сообщений: 6
|
имеется (delphi6+indy9
Использовать другие версии проблематично - много проектов на 9 написано
Если туп как дерево, родишся баобабом... (с)
|
04.06.2008, 10:02 | #9 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
для начала посоветую следующее:
поставить любой монитор http заголовков и посомтреть какая версия SSL используется. 2.е немного понял назначения в вашем случае локального сертификата
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
04.06.2008, 10:40 | #10 |
Регистрация: 30.05.2008
Сообщений: 6
|
посоветуйте что-нить...
сниффер вообще не видит что что-то ходит (наверно до отправки дело не доходит)
Если туп как дерево, родишся баобабом... (с)
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Авторизация на https | arm82 | Работа с сетью в Delphi | 15 | 23.01.2011 20:54 |
Не могу авторизоваться на HTTPS | Yuran | Работа с сетью в Delphi | 11 | 18.04.2008 14:19 |
idHTTP и HTTPS | CoDeR | Работа с сетью в Delphi | 2 | 12.11.2007 15:55 |
HTTPS и POST | Alex_C | Работа с сетью в Delphi | 4 | 25.10.2007 21:04 |
Ищу информацию по перехвату и декодированию HTTPS траффика | ir0407 | Работа с сетью в Delphi | 12 | 22.07.2007 08:49 |