json Response.RawHeaders.GetText

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
arbe
Üye
Mesajlar: 6
Kayıt: 26 Oca 2017 10:15

json Response.RawHeaders.GetText

Mesaj gönderen arbe »

json post işleminde sonra servisten gelen Response.RawHeaders.GetText aşağdak gibidir

Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.5
Token: oWeFeOpw1IiRfWL7qaQyT7CG0s6EcTONMTE5MDAwMTIwMTYxMTExMTExMTExMTExMDAwMDAx
TokenExpiry: 23.3.2017 09:12:51
Access-Control-Expose-Headers: Token,TokenExpiry
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 22 Mar 2017 06:12:51 GMT
Connection: close
Content-Length: 55

bun text içindeki token: bilgisini bir değişkene akarmak istiyorum bunu nasıl yapabilrim... yardımlarınızı bekliyorumm
ertank
Kıdemli Üye
Mesajlar: 1716
Kayıt: 12 Eyl 2015 12:45

Re: json Response.RawHeaders.GetText

Mesaj gönderen ertank »

Merhaba,

Json post işlemini TIdHTTP bileşeni ile yaptığınızı varsayarak;
TIdHTTP.Response.RawHeaders TStringList türünde erişilebilir.

Bu anlamda aşağıdaki kodu deneyebilirsiniz. Normalde TStringList.Value['abc'] şeklinde kullanım için TStringList içindeki verilerin abc=xyz şeklinde kayıtlı olması gerekli. Sizde iki nokta ile ayrılmış.

Kod: Tümünü seç

var
  TempString: string;
begin
  IdHTTP1.Get(); // normal servis işlemi yapılır
  TempString := IdHTTP1.Response.RawHeaders.Values['Token'];
end;
Eğer bu şekilde çalışmaz ise:

Kod: Tümünü seç

function GetListValue(const List: TStrings; const Value: string; const Separator: Char; const CaseInsensitive: Boolean = True): string;
var
  i: Integer;
  SeparatorPosition: Integer;
  TempString: string;
  LocalValue: string;
begin
  if List.Count = 0 then Exit(EmptyStr);

  LocalValue := Value;
  if CaseInsensitive then LocalValue := LocalValue.ToUpper();

  for i := 0 to Pred(List.Count) do
  begin
    TempString := List[i];
    if CaseInsensitive then TempString := TempString.ToUpper();

    if Pos(LocalValue, TempString) > 0 then
    begin
      SeparatorPosition := Pos(Separator, TempString);
      if SeparatorPosition = 0 then Exit(EmptyStr);
      Inc(SeparatorPosition);
      Result := Copy(List[i], SeparatorPosition, MaxInt);
      Break;
    end;
  end;
end;
Kullanımı şu şekilde olacaktır:

Kod: Tümünü seç

var
  TempString: string;
begin
  IdHTTP1.Get(); // normal servis işlemi yapılır
  TempString := GetListToken(IdHTTP1.Response.RawHeaders, 'Token', ':', False);
  ShowMessage(TempString);
end;
Cevapla