SENDHTTPPOST ile veri göndermek

TROIA'dan dışarıya HTTP POST isteği atmak için SENDHTTPPOST komutu kullanılır; URL, encoding, content-type, cookie ve header gibi parametreler opsiyoneldir:

OBJECT:
    STRING STRURL,
    STRING SONUC;

STRURL = 'http://192.168.0.2:8080/FileUploader/index.jsp';

SENDHTTPPOST '' TO STRURL;
SONUC = SYS_HTTPPOSTRESPONSE;

Yanıt her zaman SYS_HTTPPOSTRESPONSE sistem değişkeninde, gelen cookie'ler ise SYS_HTTPPOSTCOOKIES'te tutulur. Bir sonraki isteğe aynı cookie'yi taşımak için COOKIE parametresi kullanılır:

POSTPARAM = 'username=btan&password=xxxx';
STRURL = 'http://192.168.0.2:8080/FileUploader/login';

SENDHTTPPOST POSTPARAM TO STRURL COOKIE SONUC;

CALLWEBSERVICE ile SOAP servis çağırmak

Bir WSDL'e göre SOAP web servisi çağırmak için CALLWEBSERVICE kullanılır; parametre WSDL adresi, operasyon adı ve WITH ile gönderilen giriş değerleridir:

OBJECT:
    STRING WSDLURL,
    STRING SONUC,
    TABLE TMPTABLE;

WSDLURL = 'http://www.webservicex.net/globalweather.asmx?WSDL';

CALLWEBSERVICE WSDLURL, 'GetCitiesByCountry' TO SONUC WITH 'Germany';

PARSEXML TEXT SONUC INTO TMPTABLE;
SET TMPTABLE TO TABLE TMPTABLE;

Dönen XML metni doğrudan PARSEXML ile tabloya çevrilip, SET ... TO TABLE ile ekranda gösterilebilir.

SOAP olmayan servisler için SENDHTTPPOST + PARSEXML

Servis SOAP değilse (ör. basit bir XML/form endpoint'i), CALLWEBSERVICE yerine SENDHTTPPOST ile isteği atıp, gelen yanıtı PARSEXML ile işlemek de yaygın bir yöntemdir:

STRCTYPE = 'application/x-www-form-urlencoded';
STRURL = 'http://www.w3schools.com/xml/tempconvert.asmx/CelsiusToFahrenheit';

SENDHTTPPOST 'celsius=10' TO STRURL CONTENTTYPE STRCTYPE;
SONUC = SYS_HTTPPOSTRESPONSE;

PARSEXML TEXT SONUC INTO TMPTABLE;

Sonuç

SENDHTTPPOST ham HTTP isteği için, CALLWEBSERVICE ise WSDL tanımlı SOAP servisleri çağırmak için var — ikisi de sonucu string olarak döner, veriyi kullanılabilir hale getirmek genelde PARSEXML ile tamamlanır.