lazarus调用http接口解析json(迎接云计算适应微服务)

lazarus
跨平台free pascal语言ide工具,社区 http://www.fpccn.com/ 下载 ftp://freepascal.dfmk.hu/pub/lazarus/

号称一次编码,到处编译,window linux macos 等各种平台都可用。borland的delphi也是pascal开发工具但是收费,开源的lazarus免费用用挺好

云计算时代,很多微服务都是提供http接口给出json格式的字符串,今天简单用lazarus检查一台服务器上一个微服务是否在运行

首先搜索delphi代码如下:

procedure TForm1.testBtnClick(Sender: TObject);
var
  ss:  TStringStream;
  HttpClient:TIdHttp;
  ParamList: TStringList;
  jsObj: ISuperObject;
begin
//b := TStringStream.Create('',65001);  //65001是UTF-8    老版本delphi还不认识utf8??
    SS := TStringStream.Create('');
    HttpClient := TIdHttp.Create(nil);
    HttpClient.Request.ContentType := 'application/json';
    HttpClient.ReadTimeout := 5000;
    HttpClient.HandleRedirects := True;//允许头转向
    ParamList := TStringList.Create;
    try
      //ParamList.Add('LoginName=xx');
      //若要进行url中文编解码改为 ParamList.Add('MsgContext=' + HTTPEncode(UTF8Encode(memoMsgContext.Text)));
      //ParamList.Add('SendSim=' + edtSendSim.Text);
      //HttpClient.Post('http://10.100.103.236:8080/management/health', ParamList, SS);
      HttpClient.Get(Edit1.Text, SS);
      jsObj:=SO(SS.DataString);
      Edit1.Text :=jsObj.s['status'] ;
    finally
      SS.Free;
      HttpClient.Free;
      ParamList.Free;
    end;
end;

TIdHttp是indy包里的组件,delphi自带的有,ISuperObject是为了解析json字符串,网上下载到pas源码,放在工程里就好了

然后把代码复制到lazarus,竟然没有indy包,SuperObject编译不通过,网上下载indy只折腾出来32位版本indy10.2.0.3可用

发现lazarus里已经有json的的解析包 fpjson和jsonparser,继续搜索找到lazarus自带调用http的包fphttpclient,这次就完美了

var
  jData: TJSONData;
  jObject: TJSONObject;
  s: string;
begin
  try
    s := TFPCustomHTTPClient.SimpleGet(Edit1.Text);
    Memo1.Append(s);
    jData := GetJSON(S);
    jObject := TJSONObject(jData);
    s := jObject.Get('status', s);
    Memo1.Append(s);
  except
    on E: EHttpClient do
      Memo1.Append(e.message)
  end;
end;

附下参考页面:https://wiki.lazarus.freepascal.org/fphttpclient

你可能感兴趣的:(lazarus,lazarus,pascal,http接口,微服务,云计算)