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

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

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

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

Сообщение xamsin » 08.09.2019 12:17:09

использую компонент 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 то запрос проходит нормально
в чем ошибка????
xamsin
незнакомец
 
Сообщения: 2
Зарегистрирован: 08.09.2019 12:04:17

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

Сообщение serbod » 08.09.2019 13:15:25

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


Зачем s.Substring(1) ?
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

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

Сообщение xamsin » 08.09.2019 16:09:28

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=Владикавказ
xamsin
незнакомец
 
Сообщения: 2
Зарегистрирован: 08.09.2019 12:04:17

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

Сообщение DedFrend » 09.09.2019 08:15:58

Уже, вроде писал, но не вижу...
Values['distict']:=lbedDistinct.Text;
Правильно 'distiNct'
DedFrend
постоялец
 
Сообщения: 156
Зарегистрирован: 25.11.2018 12:21:50


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28

Рейтинг@Mail.ru