[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Attempt at a UPS PLD posting


   I had issues with my UPS PLD posting where no UPS response was given
   due to my limited knowledge of HTTP and SOCKET calls.

   I came across the following e-mail from your archives website and used
   the coding example from the e-mail as inspiration to correct the past
   issues with my UPS PLD posting:

               Subject Problem with HTTP POST REQUEST

               From Bruno Souche

               Date Wednesday, January 24^th, 2007  10:22:29 +0100

   I now see a UPS response from my UPS PLD posting albeit a response
   with errors.

   According to UPS Host Access Support, the code that I am currently
   using appears to be sending data as a HTTP form submit (this is the
   same as loading a page in an Internet browser) and clicking the
   "Submit" button on a displayed page.  UPS is requesting an HTTP POST
   using a socket program that will stream the body of a request in the
   UPS required format.  If I understand UPSs remarks correctly, I need
   to submit and receive the UPS data in a behind-the-scenes manner.

   At your earliest convenience, please let me know if there are
   utilities or coding that I need to add or remove in order to
   communicate to UPS properly.  I have attached the RPG ILE code along
   with the corresponding send and receive scripts.  If additional
   information is needed from me, please let me know.

   Thank you,

   Get more out of the Web. Learn 10 hidden secrets of Windows Live.
   [1]Learn Now


   1. http://windowslive.com/connect/post/jamiethomson.spaces.live.com-Blog-cns!550F681DAD532637!5295.entry?ocid=TXT_TAGLM_WL_getmore_092008
     H BndDir('HTTPAPI')

     FPLDTESTSGFIF   E             DISK
     FHTTPLOG   O    E             DISK    USROPN
     D/copy qrpglesrc,httpapi_h
     D Cmd             PR                  ExtPgm('QCMDEXC')
     D  Command                     200A   Const
     D  Length                       15P 5 Const

     D CRLF            C                   CONST(x'0d25')
     D Data            S          32767A    Varying
     D Long            S             10  0
     D Msg             S             52A
     D rc              S             10I 0
     D retdata         S          32766A
     D retlen          S             10I 0
     D nextpos         S             10I 0 inz(1)
     C                   Eval      *InLR       = *On
        Data = 'POST /hapld/tos/kdwhapltos HTTP/1.1' + CRLF;

        Data = Data + 'Host: www.pld-certify.ups.com' + CRLF;

        Data = Data + 'Content-type: multipart/mixed; boundary=BOUNDARY' + CRLF;

        Data = Data + 'Content-length: 1261' + CRLF + CRLF;

        Data = Data + '--BOUNDARY' + CRLF;

        Data = Data + 'Content-type: application/x-www-form-urlencoded' + CRLF;

        Data = Data + 'Content-length: 131' + CRLF + CRLF;

        Data = Data + 'AppVersion=1.0&AcceptUPSLicenseAgreement=Yes&';

        Data = Data + 'ResponseType=application/x-ups-pld&VersionNumber=';

        Data = Data + 'V4R1&UserId=LOG001CA&Password=LOGICOR' + CRLF;

        Data = Data + CRLF + '--BOUNDARY' + CRLF;

        Data = Data + 'Content-type: application/x-ups-binary' + CRLF;

        Data = Data + 'Content-length: 1014' + CRLF + CRLF;

         read UPHPLDR;
         data = data + %Trim(PLFLD);
         read UPHPLDR;
         data = data + %Trim(PLFLD);
         data = data + CRLF + CRLF;

        Data = Data + '--BOUNDARY--' + CRLF;
     C                   If        Not %Open(HttpLog)
     C                   Open      HttpLog
     C                   EndIf
pkf  C                   Eval      LOG         = %Trim(Data)
pkf  C                   Write     LOGREC
     C                   Close     HttpLog
      ** The only diff between using HTTPS and using HTTP is
      ** the URL that we pass. It starts with 'https://'

     C                   Eval      Long = %Len(Data)
     C     Long          Dsply

     C                   Eval      rc   = http_url_post(
     C                                     'https://www.pld-certify.ups.com/'
     C                                        : %Addr(Data)
     C                                        : %Len(%TrimR(Data))
     C                                        : '/tmp/httptest.html')
     C                   If        rc  <> 1
     C                   Eval      msg  = http_error
     C                   Dsply                   msg
     C                   Return
     C                   EndIf

     ** This should be the XML data that UPS returns to us:

     C                   Callp     cmd('DSPF ''/tmp/httptest.html''': 200)
     C                   Return
   --BOUNDARY Content-type: text/html Content-length: 138

   UPS Internet Software, Copyright UPS 1998
   --BOUNDARY Content-type: application/x-ups-psmpld Content-length: 104
   UPSOnLine%null%6931%6811Content-Type invalid. --BOUNDARY Content-type:
   application/x-ups-pld Content-length: 110
   00010000009710000008800026811Content-Type invalid. --BOUNDARY--
POST /hapld/tos/kdwhapltos HTTP/1.1
Host: www.pld-certify.ups.com
Content-type: multipart/mixed; boundary=BOUNDARY
Content-length: 1261

Content-type: application/x-www-form-urlencoded
Content-length: 131


Content-type: application/x-ups-binary
Content-length: 1014

020020                                  2004011300000000769907200   000000001*AAV69W42    US                0007699072000001*BA1ZV69W42A600058508                 00001+0000000000000100 +0000000000000100LBS02PRE10                                   3INUSD000001*CA18CONT SDC03                         BOB WATSON                         8000 JEFFREY DRIVE                 SUITE 200                                                             BEVERLY HILLS                 CA   90210    US12133455533                                             *EARLIHD1900    *FA001PO12345                              *FA002STSDS03                              *PA1ZV69W42A600058508                 02+0000100                                                  DOC+0000100+00000000+00000000+00000000*EAEVS+000000000000300000USD*EAADS*FA003PO12345                              *FA004STSDS03                              *FA005TNSCENARIO 3                         *SA000012


This is the FTPAPI mailing list.  To unsubscribe, please go to: