/* -------------------------------------------------------------- */ /* Shop - Mail - Versand */ /* -------------------------------------------------------------- */ DEF INPUT PARAMETER ipMailAdr AS CHAR NO-UNDO. DEF INPUT PARAMETER ipPasswort AS CHAR NO-UNDO. DEF INPUT PARAMETER ipBenutzer AS CHAR NO-UNDO. DEF INPUT PARAMETER ipKnr AS INT NO-UNDO. DEF VAR vcHost AS CHAR INIT "shop.huber-getraenke.ch" NO-UNDO. DEF VAR vcPort AS CHAR INIT "80" NO-UNDO. DEF VAR vhSocket AS HANDLE NO-UNDO. DEF VAR cPostURL AS CHAR INIT '/WebShop_Huber/faces/sendmailinitiator.xhtml' NO-UNDO. DEF VAR cPostData AS CHAR NO-UNDO. IF ipBenutzer <> ? AND ipKnr <> ? THEN cPostData = SUBSTITUTE('email=&1£password=&2£username=&3£knr=&4', ipMailAdr, ipPasswort, ipBenutzer, ipKnr). else cPostData = SUBSTITUTE('email=&1£password=&2', ipMailAdr, ipPasswort). cPostData = REPLACE(cpostData, '£', '&'). cPostData = cPostURL + '?' + cPostData. CREATE SOCKET vhSocket. vhSocket:CONNECT('-H ' + vcHost + ' -S ' + vcPort) NO-ERROR. IF vhSocket:CONNECTED() = FALSE THEN DO: MESSAGE "Connection failure" VIEW-AS ALERT-BOX. MESSAGE ERROR-STATUS:GET-MESSAGE(1) VIEW-AS ALERT-BOX. RETURN. END. vhSocket:SET-READ-RESPONSE-PROCEDURE('getResponse'). /* supposes there is an webspeed app called yourapp.w that receives param1, param2, param3 */ RUN PostRequest (INPUT cPostData). WAIT-FOR READ-RESPONSE OF vhSocket. vhSocket:DISCONNECT() NO-ERROR. DELETE OBJECT vhSocket. PROCEDURE getResponse: DEFINE VARIABLE vcWebResp AS CHARACTER NO-UNDO. DEFINE VARIABLE lSucess AS LOGICAL NO-UNDO. DEFINE VARIABLE mResponse AS MEMPTR NO-UNDO. IF vhSocket:CONNECTED() = FALSE THEN do: MESSAGE 'Not Connected' VIEW-AS ALERT-BOX. RETURN. END. lSucess = TRUE. DO WHILE vhSocket:GET-BYTES-AVAILABLE() > 0: SET-SIZE(mResponse) = vhSocket:GET-BYTES-AVAILABLE() + 1. SET-BYTE-ORDER(mResponse) = BIG-ENDIAN. vhSocket:READ(mResponse,1,1,vhSocket:GET-BYTES-AVAILABLE()). vcWebResp = vcWebResp + GET-STRING(mResponse,1). END. /* *PUT HERE THE CODE TO MANIPULATE THE ANSWER */ END. PROCEDURE PostRequest: DEF INPUT PARAMETER postData AS CHAR NO-UNDO. /* Parameters to be sent in the format paramName=value¶mName=value¶mName=value */ DEF VAR vcRequest AS CHAR NO-UNDO. DEF VAR mRequest AS MEMPTR NO-UNDO. vcRequest = 'GET ' + PostData + ' HTTP/1.1~r~n' + 'Host:' + vcHost + '~r~n' + '~r~n'. SET-SIZE(mRequest) = 0. SET-SIZE(mRequest) = LENGTH(vcRequest) + 1. SET-BYTE-ORDER(mRequest) = BIG-ENDIAN. PUT-STRING(mRequest,1) = vcRequest . vhSocket:WRITE(mRequest, 1, LENGTH(vcRequest)). END PROCEDURE.