Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник |
Коллекция курьезных вопросов из форумов
KOL и MCK |
KOL и MCK - Компактные программы на Delphi
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

Bad Request при Post-запросе. W10,RAD XE3,Indy10


zsv   (26.10.18 11:48

Добрый день, знатоки.
Помогите в решении следующего вопроса:
Есть некий веб-сервис со своим АПИ. Была написана на Delphi7 и родном Indy программка для работы с этим сервисом.
После обновления веб-сервера на той стороне, программка перестала коннектится по ССЛ с ошибкой Error connecting with SSL.
Свежие библиотеки Indy9 не понимал, пришлось поставить Indy10. После этого появилась ошибка Bad Request. Установил XE3, накатил самый свежий Indy10_5478, подложил самые свежие библы для ССЛ. Все равно Bad Request.


zsv   (26.10.18 11:50[1]

Вот код для XE3

procedure TForm1.Button1Click(Sender: TObject);
var FHTTP:TIdHTTP;
   SSL: TIdSSLIOHandlerSocketOpenSSL;
   HttpParams:TStringList;
   Response:TStringStream;
   ini:tIniFile;
   s:string;
begin
  Button1.Enabled:=false;
  FHTTP:=TIdHTTP.Create(nil);
  SSL := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
  HttpParams:=TStringList.Create;
  Response:=TStringStream.Create('');
  s:=ExtractFilePath(Application.ExeName)+'Phonet.ini';
  ini:=tIniFile.Create(s);
  try FHTTP.Request.UserAgent:='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
      FHTTP.Request.ContentType:='application/json';
      FHTTP.HTTPOptions := [hoKeepOrigProtocol,hoForceEncodeParams,hoNoProtocolErrorException,hoWantProtoco lErrorContent];
      SSL.SSLOptions.Method:=sslvTLSv1;
      SSl.PassThrough:=false;
      FHTTP.IOHandler:=SSL;
      s:=ini.ReadString('Main','AuthorizateCommand','');
      HttpParams.Add(s);
      s:=ini.ReadString('Main','URL','');
      FHTTP.Post(s, HttpParams, Response);
      if FHttp.Response.ResponseCode<>200 then begin
         s:=IfThen(FHttp.Response.ResponseText<>'',FHttp.Response.ResponseText,'');
         if Response.DataString<>'' then s:=s+': '+Response.DataString;
         ShowMessage('Ошибка при авторизации:'+#10#13+s);
      end else ShowMessage('Авторизовано успешно:'+#10#13+
                         FHttp.Response.RawHeaders.Values['Set-Cookie']);
  finally ini.Free; Response.Free; HttpParams.Free; SSL.Free; FHTTP.Free; Button1.Enabled:=true; end;
end;


Вот содежнимое ini файла
[Main]
URL=https://htp1.phonet.com.ua/rest/security/authorize
AuthorizateCommand={"domain":"htp129.phonet.com.ua", "apiKey":"2dH7Y7TROvzwurbCvj44RSQcy86gcFK4"}


zsv   (26.10.18 11:51[2]

сорри. урл в ини другой..
URL=https://htp.phonet.com.ua/rest/security/authorize


zsv   (26.10.18 11:55[3]

вот гоню.... вот правильное содержимое ини
[Main]
URL=https://htp.phonet.com.ua/rest/security/authorize
AuthorizateCommand={"domain":"htp29.phonet.com.ua", "apiKey":"2dH7Y7TROvzwurbCvj44RSQcy86gcFK4"}


zsv   (26.10.18 13:57[4]

Всем спасибо. Сам разобрался. При попытке запостить ContentType:='application/json' незлья в HTTPOptions включать hoForceEncodeParams, тк тогда все разделители в JSOn-данных конвертируются в невалидные для JSOn символы


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо