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;