Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > ICS+SSL: Bad Request


Автор: GSV 23.10.2012, 15:58
Всем добрый день!
Использую компоненты ICS, пытаюсь отправить XML-запрос на https://www.stramedia.ru/modules/xml_send_sms.php
Текст XML-запроса согласно формату оператора рассылки СМС-сообщений
На форме валяются:
HTTP: TSslHttpCli
SslContext1: TSslContext
Отправка запроса по нажатию кнопки: 
Код

procedure TForm1.ToolButton5Click(Sender: TObject);
var
    DataList            :TStringList;
    mSend, mRcv     :TStringStream;
begin

    mRcv :=  TStringStream.Create('');


    DataList:= TStringList.Create;
    DataList.Add('<?xml version="1.0" encoding="windows-1251"?>');
    DataList.Add('<message>');
    DataList.Add('<username>****</username>');
    DataList.Add('<password>****</password>');
    DataList.Add('<from>IvanovAA</from>');
    DataList.Add('<to>79161112233</to>');
    DataList.Add('<coding>2</coding>');
    DataList.Add('<dlrmask>31</dlrmask>');
    DataList.Add('<text>текст</text>');
    DataList.Add('</message>');

    mSend:=  TStringStream.Create(DataList.Text);

    HTTP.SendStream := mSend;
    HTTP.URL:='https://www.stramedia.ru/modules/xml_send_sms.php';
    HTTP.RcvdStream := mRcv;
    HTTP.Post;
    ShowMessage(mRcv.DataString);
    ...
   

end;

В ходе выполнения ошибка: Project blabla.exe raised exception class EHttpException with message 'Bad Request'. Process stoped...

Даже если просто зайти в IE по этой ссылке будет адекватный ответ, но при отправке пустого запроса - ошибка такая же.

Автор: MetalFan 23.10.2012, 22:20
GSV, поставить любой http-отладчик (я рекомендую бесплатный http://www.fiddler2.com/fiddler2/) и сравнить, что шлет браузер и твое приложение.
Ну и на основании этого поправить свой запрос.

ну и предположу, что ICS (как и indy) используют бесплатные библиотеки OpenSSL для работы с https, что требует наличие подходящей версии оной поблизости от программы... проверьте, нормально ли отправляются https запросы в принципе.

Автор: GSV 24.10.2012, 07:54
MetalFan, я долго подбирал libeay32.dll и ssleay32.dd, пока не убрал ошибку типа: ICS unsupported this version OpenSSL library
По поводу HTTP-отладчик  - попробую.

to be continued...

Автор: GSV 25.10.2012, 08:20
... пытался пользоваться fiddler2... никаких логов проги я не зафиксировал. Может что-то не так делаю.
Пробовал другими прогами-мониторилками трафика пользоваться, но ни одна не фиксировала трафик проги.

Автор: MetalFan 25.10.2012, 10:30
GSV, каким образом пытался? настроил свою прогу на локальный прокси, который создает фиддлер? включил в фиддлере поддержку перехвата https?

Автор: GSV 25.10.2012, 11:29
http://s1.ipicture.ru/uploads/20121025/i7UZLSgE.jpg

Автор: MetalFan 25.10.2012, 11:49
GSV, ну так а Decrypt? или контент не интересен? а в самой программе локальный прокси назначил?

Автор: GSV 25.10.2012, 11:56
Теперь другая проблема: СМС отправляются и приходят на  телефон, при этом на процедуре HTTP.Post возникает ошибка Access violation.

Автор: GSV 25.10.2012, 12:44
Настроил фиддлер, вот что показывает

<HTML><HEAD><TITLE>Сообщение об ошибке</TITLE>
<META http-equiv=Content-Type content="text/html; charset=windows-1251">
<BODY>
<TABLE><TR><TD id=L_dt_1><B>Сообщение о доступе к сети: не удается отобразить страницу<B></TR></TABLE>
<TABLE><TR><TD height=15></TD></TR></TABLE>
<TABLE>
<TR><TD id=L_dt_2>Технические сведения (для персонала службы поддержки)
<UL>
<LI id=L_dt_3>Код ошибки: 407 Требуется проверка подлинности через РїСЂРѕРєСЃРё-сервер. ISA Server требует авторизации для выполнения данного запроса. Отказано РІ доступе Рє фильтру веб-РїСЂРѕРєСЃРё. (12209)
<LI id=L_dt_4>IP-адрес: 10.1.1.5
<LI id=L_dt_5>Дата: 25.10.2012 9:36:12 [GMT]
<LI id=L_dt_6>Сервер: proxy.msk.******.ru
<LI id=L_dt_7>Источник: РїСЂРѕРєСЃРё
</UL></TD></TR></TABLE></BODY></HTML>

Автор: GSV 26.10.2012, 16:58
Вопрос решен

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