Запрос GET c параметрами и заголовком

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
xamsin
незнакомец
Сообщения: 2
Зарегистрирован: 08.09.2019 11:04:17

Запрос GET c параметрами и заголовком

Сообщение xamsin »

использую компонент fphttpclient
Хочу написать запрос к HTTPS веб сервису
который требует передачу некоторых параметров в заголовке
пишу так:

Код: Выделить всё

uses
  Classes, SysUtils, fphttpclient, Forms,
  Controls, Graphics, Dialogs, StdCtrls, ExtCtrls, PairSplitter, fpopenssl;   
procedure TForm2.Button1Click(Sender: TObject);
 var
   QueryParams:TStrings=nil;
   AURL:string;
   s:string='';
   item:string;
   l: TStringstream;
   http: tfphttpclient;
begin
 l := TStringStream.Create('');
 http:=tfphttpclient.Create(nil);
 With http do
    try
      QueryParams:=TStringList.Create;
      AddHeader('Authorization', 'AccessToken MjtAFOrgYUrsfCC7KPLpAi03N4Od17Bh');
      AddHeader('X-User-Authorization', 'Basic aW5mb0BzcG1hc2gucnU6NTE0NzU4');
      AddHeader('Content-Type','application/json;charset=UTF-8');
      with QueryParams do
       begin
        if not String(lbedSettlement.Text).IsEmpty then
           Values['settlement']:=lbedSettlement.Text;
        if not String(lbedRegion.Text).IsEmpty then
           Values['region']:=lbedRegion.Text;
        if not String(lbedDistinct.Text).IsEmpty then
           Values['distict']:=lbedDistinct.Text;
       end;
      AURL:='https://otpravka-api.pochta.ru/postoffice/1.0/settlement.offices.codes';
      For item in QueryParams do
          s:=s+'&'+ item;
      AURL:=AURL+'?' + s.Substring(1);
      httpmethod('GET',AURL,l,[]);
      memo1.Lines.Clear;
      memo1.Lines.Append(inttostr(ResponseStatusCode) + ' ' + ResponseStatusText);
      memo1.Lines.Append(ResponseHeaders.Text);
      memo1.Lines.Append(l.DataString);
    finally
      Free;
      QueryParams.Free;
      l.Free;
    end;
 
end;
 

в ответ получаю 400 Bad Request
пробовал подобное через synapse
ситуация не меняется
если запрос отправляю через rest клиенты
например: chrome Advanced Rest Client то запрос проходит нормально
в чем ошибка????
Аватара пользователя
serbod
постоялец
Сообщения: 449
Зарегистрирован: 16.09.2016 10:03:02
Откуда: Минск
Контактная информация:

Re: Запрос GET c параметрами и заголовком

Сообщение serbod »

xamsin писал(а):For item in QueryParams do
          s:=s+'&'+ item;
      AURL:=AURL+'?' + s.Substring(1);


Зачем s.Substring(1) ?
xamsin
незнакомец
Сообщения: 2
Зарегистрирован: 08.09.2019 11:04:17

Re: Запрос GET c параметрами и заголовком

Сообщение xamsin »

serbod писал(а):
xamsin писал(а):For item in QueryParams do
          s:=s+'&'+ item;
      AURL:=AURL+'?' + s.Substring(1);


Зачем s.Substring(1) ?

чтобы не взять строку без первого символа.
но вопрос в том, что почему-то в этом случае и имею Bad Request
строка то формируется верно
https://otpravka-api.pochta.ru/postoffi ... ettlement=Владикавказ
DedFrend
постоялец
Сообщения: 157
Зарегистрирован: 25.11.2018 11:21:50

Re: Запрос GET c параметрами и заголовком

Сообщение DedFrend »

Уже, вроде писал, но не вижу...
Values['distict']:=lbedDistinct.Text;
Правильно 'distiNct'
Ответить