Buenas noches,
Estoy tratando de enviar información mediante un web service SOAP desde
AS400 pero me sale el siguiente mensaje de error:
AxisTransportException: Cannot open a channel to the remote
end. Failed to open connection to server, the operation
gsk_secure_soc_init() failed. GSKit Error is 6000 - El certificado no está
señalado por una Autoridad certificadora verificado.

Instale el certificado del wsdl usando el  Digital Certificate Manager.
Este es la url del wsdl:
https://calidad.escondatagate.net/wsParser_2_1/soap/wsPaserSoap.wsdl

Este es mi codigo en AS400:

H bnddir('BASE64R4')
H BNDDIR('BASE64':'QC2LE')
F*- Accesos
FPRB64     IF   E           K DISK
*---------------------------------------------------------------*
/copy /wsose/RPG01DEV/wsPaserSoapPort.rpgleinc
/copy /QIBM/ProdData/OS/WebServices/V1/client/include/Axis.rpgleinc
/copy /BASE64/QRPGLESRC/base64_h.rpgle
/COPY /BASE64/QRPGLESRC/APR_BASE64_H.rpgle
/copy /BASE64/QRPGLESRC/ifsio_h.rpgle
 *----------------------------------------------------
 *- ESTRUCTURAS DE TRABAJO                           -
 *----------------------------------------------------
d WsStub          ds                  likeds(This_t) Inz
d Input2          ds                  likeds(EnviarDocumento_t) Inz
d Result          ds                  likeds(EnviarDocumentoResponse_t) Inz
 *----------------------------------------------------
d KCOD            s             11A   Inz(*blanks)
d KSUC            s              3S 0 Inz(*zeros)
d wI              s              3S 0 Inz(*zeros)
d wInt            s              3S 0 Inz(*zeros)
d PMsg            S            256A   DIM(10)
d wPos            s              3S 0 Inz(*zeros)
d wString         s            500A   Inz(*blanks)
d wRegion         s              2A   Inz(*blanks)
d WWSUB           s              2A   Inz(*blanks)
d XISUC           s              3S 0 Inz(*zeros)
D wbase64xml      S        9999999A   inz
D wbase64xm2      S        9999999A   inz
d wwEncoded       s         100000A   Inz(*blanks)
d wwEncLen        s             10i 0
d b64pr           s             10i 0
d A               s              5p 0
D N               s              4s 0
d fd              s             10i 0
d rddata          s         999999A
D flags           s             10U 0
d mode            s             10U 0
d msg             s             50A
d len             s             10i 0
d var1            s         999999A   Inz(*blanks)
d ruta            s            100A   Inz(*blanks)
d NULLSTR         s              1A   Inz(x'00')
d none            s              6a
d settrue         s              6a
d setfalse        s              6a
 *--------------------------------------------------------------------
 * Web service logic.
 *--------------------------------------------------------------------
 /free
   CLEAR PRPT;
   CLEAR PHASH;

   clear WsStub;
   clear Input2;

    WsStub.endpoint = '
https://calidad.escondatagate.net:443/wsParser_2_1/soap';

ruta = '/QIBM/USERDATA/ICSS/CERT/SERVER/DEFAULT.KDB' + x'00';
none = 'NONE' + x'00';
SETFALSE = 'false' + x'00';
EXSR LEETX;
b64pr = apr_base64_encode_binary(var1
                                :rddata
                                :len);

Input2.fileName.value = '20347646891-01-F602-0009060.txt';
Input2.fileContent.value = var1;

// Invoca la operación del WebService
   IF (stub_create_wsPaserSoapPort(WsStub) = *ON);
      axiscStubSetUsername(WsStub.handle:I20USE);
      axiscStubSetPassword(WsStub.handle:I20PSW);
      axiscStubSetSecure(WsStub.handle:
         %addr(ruta): %addr(NULLSTR): %addr(NULLSTR): %addr(NONE):
         %addr(NONE): %addr(NONE): %addr(NULLSTR): %addr(NULLSTR):
         %addr(SETFALSE): *NULL);

   IF (stub_op_enviarDocumento(WsStub:Input2:Result)=*ON);
         PRPT = Result.responseMessage;
         PHASH = Result.hashcode;
   ELSE;
   ENDIF;

   // Destroy Web service stubs.
   stub_destroy_wsPaserSoapPort(WsStub);
ELSE;
ENDIF;

  *INLR=*ON;
/end-free
 *---------------------------------------------------
C     LEETX         BEGSR
C                   EVAL      flags = O_RDONLY
C                   EVAL      FD = OPEN('/BASE64/PRUEBA.TXT':
C                                       FLAGS)
C                   IF        FD < 0
C                   EVAL      MSG = 'ERROR'
C                   ENDIF
 *-
C                   EVAL      LEN = READ(FD: %ADDR(RDDATA):
C                                            %SIZE(RDDATA))
C                   EVAL      MSG = 'TAMAÑO:' + %TRIM(%EDITC(LEN:'M'))
C     Msg           dsply
C                   callp     close(fd)
C                   ENDSR


Gracias por las respuestas

Miguel
____________________________________________________
�nete a Recursos AS400, nuestra Comunidad ( http://bit.ly/db68dd )
Forum.Help400 � Publicaciones Help400, S.L.

Reply via email to