POST_HTTP-REQUEST.p 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /* -------------------------------------------------------------- */
  2. /* Shop - Mail - Versand */
  3. /* -------------------------------------------------------------- */
  4. DEF INPUT PARAMETER ipMailAdr AS CHAR NO-UNDO.
  5. DEF INPUT PARAMETER ipPasswort AS CHAR NO-UNDO.
  6. DEF INPUT PARAMETER ipBenutzer AS CHAR NO-UNDO.
  7. DEF INPUT PARAMETER ipKnr AS INT NO-UNDO.
  8. DEF VAR vcHost AS CHAR INIT "shop.huber-getraenke.ch"
  9. NO-UNDO.
  10. DEF VAR vcPort AS CHAR INIT "80" NO-UNDO.
  11. DEF VAR vhSocket AS HANDLE NO-UNDO.
  12. DEF VAR cPostURL AS CHAR INIT '/WebShop_Huber/faces/sendmailinitiator.xhtml'
  13. NO-UNDO.
  14. DEF VAR cPostData AS CHAR NO-UNDO.
  15. IF ipBenutzer <> ? AND
  16. ipKnr <> ? THEN cPostData = SUBSTITUTE('email=&1£password=&2£username=&3£knr=&4', ipMailAdr, ipPasswort, ipBenutzer, ipKnr).
  17. else cPostData = SUBSTITUTE('email=&1£password=&2', ipMailAdr, ipPasswort).
  18. cPostData = REPLACE(cpostData, '£', '&').
  19. cPostData = cPostURL + '?' + cPostData.
  20. CREATE SOCKET vhSocket.
  21. vhSocket:CONNECT('-H ' + vcHost + ' -S ' + vcPort) NO-ERROR.
  22. IF vhSocket:CONNECTED() = FALSE THEN
  23. DO:
  24. MESSAGE "Connection failure" VIEW-AS ALERT-BOX.
  25. MESSAGE ERROR-STATUS:GET-MESSAGE(1) VIEW-AS ALERT-BOX.
  26. RETURN.
  27. END.
  28. vhSocket:SET-READ-RESPONSE-PROCEDURE('getResponse').
  29. /* supposes there is an webspeed app called yourapp.w that receives param1, param2, param3 */
  30. RUN PostRequest (INPUT cPostData).
  31. WAIT-FOR READ-RESPONSE OF vhSocket.
  32. vhSocket:DISCONNECT() NO-ERROR.
  33. DELETE OBJECT vhSocket.
  34. PROCEDURE getResponse:
  35. DEFINE VARIABLE vcWebResp AS CHARACTER NO-UNDO.
  36. DEFINE VARIABLE lSucess AS LOGICAL NO-UNDO.
  37. DEFINE VARIABLE mResponse AS MEMPTR NO-UNDO.
  38. IF vhSocket:CONNECTED() = FALSE THEN do:
  39. MESSAGE 'Not Connected' VIEW-AS ALERT-BOX.
  40. RETURN.
  41. END.
  42. lSucess = TRUE.
  43. DO WHILE vhSocket:GET-BYTES-AVAILABLE() > 0:
  44. SET-SIZE(mResponse) = vhSocket:GET-BYTES-AVAILABLE() + 1.
  45. SET-BYTE-ORDER(mResponse) = BIG-ENDIAN.
  46. vhSocket:READ(mResponse,1,1,vhSocket:GET-BYTES-AVAILABLE()).
  47. vcWebResp = vcWebResp + GET-STRING(mResponse,1).
  48. END.
  49. /*
  50. *PUT HERE THE CODE TO MANIPULATE THE ANSWER
  51. */
  52. END.
  53. PROCEDURE PostRequest:
  54. DEF INPUT PARAMETER postData AS CHAR NO-UNDO.
  55. /* Parameters to be sent in the format paramName=value&paramName=value&paramName=value */
  56. DEF VAR vcRequest AS CHAR NO-UNDO.
  57. DEF VAR mRequest AS MEMPTR NO-UNDO.
  58. vcRequest = 'GET '
  59. + PostData
  60. + ' HTTP/1.1~r~n'
  61. + 'Host:'
  62. + vcHost
  63. + '~r~n'
  64. + '~r~n'.
  65. SET-SIZE(mRequest) = 0.
  66. SET-SIZE(mRequest) = LENGTH(vcRequest) + 1.
  67. SET-BYTE-ORDER(mRequest) = BIG-ENDIAN.
  68. PUT-STRING(mRequest,1) = vcRequest .
  69. vhSocket:WRITE(mRequest, 1, LENGTH(vcRequest)).
  70. END PROCEDURE.