L'esempio seguente mostra come inviare una richiesta Get HTTP mediante la proprietà State come variabile di stato della macchina di stato:
PROGRAM SR_HttpClient
VAR
//FB instance
fbHTTP : SE_HTTP.FB_HttpClient;
//Application commands
xCmdSendRequest : BOOL;
xCmdReset : BOOL;
//Input parameter of Connect method
sServerIP : STRING[15] := '34.227.236.7';
uiServerPort : UINT := 443;
stTlsSettings : SE_HTTP.TCPUDP.ST_TlsSettingsClient;
//Input parameter of Get method
sResource : STRING[SE_HTTP.GPL.Gc_uiMaxLengthOfResource];
sHost : STRING[SE_HTTP.GPL.Gc_uiMaxLengthOfHost] := 'se.com';
sAdditionalHeader : STRING;
sResponse : STRING[2000];
//Response evaulation
uiResponseCode : UINT;
etStatusClass : SE_HTTP.ET_StatusClass;
sHeader : STRING[1000];
sContent : STRING[1000];
uiHeaderBufferSize : UINT;
uiContentBufferSize : UINT;
//Local diagnostic variables
xError : BOOL;
etResult : SE_HTTP.ET_Result;
sResultMsg : STRING;
END_VAR
VAR CONSTANT
c_byNull: BYTE := 16#0;
END_VAR
CASE fbHTTP.State OF
SE_HTTP.ET_State.Idle:
//Trigger Send Request
IF xCmdSendRequest THEN
xCmdSendRequest := FALSE;
fbHTTP.ConnectToServer( i_sServerIP:= sServerIP,
i_uiServerPort:= uiServerPort,
i_xUseTls:= TRUE,
i_stTlsSettings:= stTlsSettings,
q_xError=> xError,
q_etResult=> etResult,
q_sResultMsg=> sResultMsg);
END_IF
SE_HTTP.ET_State.Connected:
//Send HTTP method GET
fbHTTP.Get( i_sResource:= sResource,
i_sHost:= sHost,
i_anyAdditionalHeader:= sAdditionalHeader,
i_anyResponseBuffer:= sResponse,
q_xError=> xError,
q_etResult=> etResult,
q_sResultMsg=> sResultMsg);
SE_HTTP.ET_State.ResponseAvailable:
//Process response before acknowledge
uiResponseCode := fbHTTP.StatusCode;
etStatusClass := fbHTTP.StatusClass;
//Extract header and content from response
uiHeaderBufferSize := SIZEOF(sHeader);
SysMem.SysMemCpy(pDest := ADR(sHeader), pSrc := (ADR(sResponse)),
udiCount := MIN(fbHTTP.HeaderLength, uiHeaderBufferSize-1));
sHeader [uiHeaderBufferSize] := c_byNull;
uiContentBufferSize := SIZEOF(sContent);
SysMem.SysMemCpy(pDest := ADR(sContent), pSrc := (ADR(sResponse) +fbHTTP.ContentStartIndex), udiCount := MIN(fbHTTP.ContentLength,uiContentBufferSize-1));
sContent [uiContentBufferSize] := c_byNull;
//Acknowledge response and disconnect from server
fbHTTP.AcknowledgeResponse(i_xStayConnected := FALSE);
SE_HTTP.ET_State.Error:
//Trigger reset of detected error
IF xCmdReset THEN
xCmdReset := FALSE;
fbHTTP.Reset();
END_IF
END_CASE