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

Re: Sending Attachment in WSDL2RPG



Hi Jim,

I am happy that it works, now.

I assume that it is not a big deal to get the non-MTOM version working,
providing, we could get an example message from the web service provider.

But on the other hand, never touch a running system.

Thomas.

Am 17.10.2016 um 22:31 schrieb Jim Franz:
>    Thomas,
>    I have successfully used the MTOM version - there were several
>    corrections I needed, but your explanation got me there. Thank you! I
>    did spend some time first trying to get the "no MTOM" option working,
>    each time had an empty file. I'm sure it was something in my code.
>    Moving on.
>    Jim Franz�
> 
>    On Sun, Oct 16, 2016 at 4:48 AM, Thomas Raddatz
>    <[1]thomas.raddatz@xxxxxxxxxxx> wrote:
> 
>      Jim,
>      The 500 error is because my test web service does not understand
>      MTOM
>      messages. So that error is an expected error.
>      "is the 3rd line with ".contentMTOM" my problem?"
>      I cannot answer that question, because the "contentMTOM" parameter
>      is
>      not related to the SOAP message format. It is specific to your web
>      service and actually the developer could have called it "fooBaa".
>      What I
>      want to say is, that WSDL2RPG is not aware of that parameter. You
>      have
>      to look at the documentation of the web service to understand what
>      it is
>      used for.
>      What does your request message look like (from your debug log)? Is
>      it
>      similar to my "MTOM_on" or "MTOM_off" message. Look at the "type"
>      attribute of the "ContentType" header to answer that question or,
>      even
>      better, post the debug log or send me a private message with the
>      debug log.
>      MTOM off:
>      Content-Type: multipart/related;
>      �  �  �  �  type="application/soap+xml";
>      �  �  �  �  boundary="MIMEBoundary_20161015161722957000_835444";
>      �  �  �  �  start="<[2]254BE006E6C519E1A5DC00
>      04AC1AF51A.2@xxxxxxxxxxx>"
>      MTOM on:
>      Content-Type: multipart/related;
>      �  �  �  �  type="application/xop+xml";
>      �  �  �  �  boundary="MIMEBoundary_20161015161801100000_835444";
>      �  �  �  �  start="<[3]6ABEC006E6C719E1A5DC00
>      04AC1AF51A.2@xxxxxxxxxxx>"
>      Here are my ideas what you have to do next:
>      a) Figure out what message type you send (MTOM or not).
>      b) Figure out what the web service really wants (MTOM or not).
>      Because
>      of element "contentMTOM", I would assume an MTOM message.
>      c) Figure out, whether or not the soap message must contain a
>      reference
>      to the file attachment like this:
>      Start of the file attachment. The attribute of interest is
>      "Content-ID".
>      --MIMEBoundary_20160509183854394000_558036
>      Content-Type: application/zip;
>      �  �  �  �  name="Scont_20160101_20160131.zip"
>      Content-Transfer-Encoding: binary
>      Content-ID: <[4]A56940016BE319D5B0040004AC0C3458.1@xxxxxxxxxxx>
>      Content-Disposition: attachment;
>      �  �  �  �  filename="Scont_20160101_20160131.zip"
>      Maybe, that you have to put it somewhere in the soap message to let
>      the
>      receiver know the attachment that belongs to the message like this:
>      <documento>
>      �  � <inc:Include
>      �  �  href="[5]cid:A56940016BE319D5B0040004AC0C3458.1@tools400.de"
>      �  �  xmlns:inc="[6]http://www.w3.org/2004/08/xop/include"/>
>      </documento>
>      For a) look at the Content-Type header.
>      For b) and c) ask your web service provider or look at the
>      documentation
>      of the web service. An example message would be great to answer b)
>      and c).
>      Can you use soapUI to call the web service? Can it successfully call
>      the
>      service?
>      Thomas.
> 
>    Am 16.10.2016 um 04:35 schrieb midrange:
>    > Thomas,
>    >
>    > Reading the logs you sent, the MTOM "on" log shows a http 500 error
>    and did not complete the attachment processing (see end of this post).
>    >
>    > I am going back through how I generated the programs to give you more
>    info.
>    > I am currently not authorized to save the wsdl2rpg lib and zip to you
>    for analysis (developers can't save/export anything).
>    > Most of the source has 8/24/16 change dates, and I downloaded on
>    9/19/16 There was a previous version 1.16.4 library I renamed before
>    new install and was not in libl
>    >
>    > LIBHTTP is 1.32�  and installed same day (first) There was a prev
>    version 1.29 and renamed before new install System at ptf cume 15142
>    (...).
>    > > I will be first to admit working in ILE is a challenge to me so
>    pardon my ignorance - This is part of the generated test program - is
>    the 3rd line with ".contentMTOM" my problem? Should it be commented
>    out? I only modified filename and mimeType
>    >
>    > // Clear array item
>    > clear parameters.document.contentList.content(X_A2);
>    >
>    > // Set array item values:
>    > parameters.document.contentList.content(X_A2).content = 'base64';
>    parameters.document.contentList.content(X_A2).contentMTOM = 'base64+ ';
>    parameters.document.contentList.content(X_A2).fileName =
>    %trim(j2FILEPATH); parameters.document.contentList.content(X_A2).
>    mimeType = %trim(j2MIMETYPE);
>    >
>    > ... required parameters to send with document
>    >
>    > // Create attachments
>    > j3transferEnc = 'WSDL_MIME_BASE64';
>    > j3suggFileNam = %trim(j2DOCTITLE);
>    > j3filePath�  �  = %trim(j2FILEPATH);
>    > j3mimeType�  �  = %trim(j2MIMETYPE);
>    >
>    > partID =
>    >�  �  P8ServiceImplPort_addDocument_Attachments_addFile(
>    >�  �  �  � j3filePath: j3mimeType
>    >�  �  �  � : j3transferEnc: j3suggFileNam);
>    >
>    >
>    > // Now let's call the web service.
>    > addDocumentResponse =
>    >�  �  P8ServiceImplPort_addDocument(
>    >�  �  �  �  parameters:
>    >�  �  �  �  errText);
>    >
>    >
>    >
>    > Jim Franz
>    >
>    > MTOM "on" log you sent
>    >
>    > SetError() #13: HTTP/1.1 500 Internal Server Error
>    > recvresp(): end with 500
>    > recvdoc parms: chunked 0
>    > header_load_cookies() entered
>    > recvchunk(): entered
>    > get_chunk_size(): entered
>    > 257
>    >
>    > chunk size = 599
>    > get_chunk_size returned 599
>    > calling comm_blockread
>    > <?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope
>    xmlns:soapenv="[7]http://www.w3.org/2003/05/soap-envelope";><
>    soapenv:Header xmlns:wsa="[8]http://www.w3.org/
>    2005/08/addressing"><wsa:Action>[9]http://www.w3.org/2005/
>    08/addressing/soap/fault</wsa:Action></soapenv:Header><
>    soapenv:Body><soapenv:Fault><soapenv:Code><soapenv:Value>
>    soapenv:VersionMismatch</soapenv:Value></soapenv:Code><
>    soapenv:Reason><soapenv:Text xml:lang="en-US">Transport level
>    information does not match with SOAP Message namespace
>    URI</soapenv:Text></soapenv:Reason><soapenv:Detail
>    /></soapenv:Fault></soapenv:Body></soapenv:Envelope>
>    > comm_blockread returned 599
>    > ** [10]2016-10-15-16.18.01.702000: Preparing to parse received
>    message
>    > WSDL2RPG: USR0042: Unexpected Soap element received from web service.
>    >�  �  �  �  �  �  �  �  �  �  Cause . . . . . :�  � The web service
>    sent an element that was not expected. This error often happens if the
>    web service sends a Soap header that has not been declared in the wsdl
>    file. Please enable the debug log to see what actually was
>    > returned by the web service. Most likely you then want to disable
>    sending this escape message in procedures 'SOAPMessage_
>    unexpectedElementStart' and 'SOAPMessage_unexpectedElementEnd'.
>    >�  �  �  �  �  � received from procedure: BASICS1R1_f_sndPgmMsg
>    >�  �  �  �  �  �  �  �  �  �  � and statement: 54400 WSDL2RPG (eXpat
>    error): (-1009) Unexpected Soap element received from web service.
>    >
>    >�  �  � received at line: 1
>    >�  �  �  �  �  �  at column: 177
>    >�  �  �  � from procedure: WSDL2R97_XMLSAXParser_parse
>    >�  �  �  �  and statement: 107600
>    > ** 2016-10-15-16.18.01.729000: Failed parsing XML message
>    > ** 2016-10-15-16.18.01.729000: Failed parsing XML message
>    > SetError() #16: recvchunk: saveproc: Not all data was written�
>    > http_close(): entered
>    > HTTPAPI Ver 1.33-BETA2 released 2016-10-13 NTLM Ver 1.4.0 released
>    2014-12-22
>    > OS/400 Ver V7R2M0
>    >
>    > ** 2016-10-15-16.18.01.730000: Leaving DownloadAttachment12_
>    setAttachment()
>    >
>    >
>    > -----Original Message-----
>    > From: [11]ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
>    [mailto:[12]ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of Thomas
>    Raddatz
>    > Sent: Saturday, October 15, 2016 10:34 AM
>    > To: HTTPAPI and FTPAPI Projects
>    > Subject: Re: Sending Attachment in WSDL2RPG
>    >
>    > I have no idea, why it should not work for you. I tested MTOM support
>    again and I could switch MTOM on and off by the debugger. Please find
>    the example logs attached.
>    >
>    > Just to make sure: Did you properly compile the "WS_OPER" module and
>    link the stub service program? Maybe you should try to debug procedure
>    > MessageContext_new() of moduleWSDL2R85 of service program WSDL2RPGRT
>    and change "isMTOM" there.
>    >
>    > I also do not understand why MTOM should be the default. For sure it
>    is not the default value.
>    >
>    > Maybe you should send to me the source members that you generated
>    with WSDL2RPG and the zip file of your version of WSDL2RPG.
>    >
>    > PM: thomas dot raddatz at tools400 dot de
>    >
>    > Thomas.
>    >
>    > Am 14.10.2016 um 17:41 schrieb Jim Franz:
>    >>�  �  Thanks for the info - file got there, but they could not handle
>    >>�  �  using�  MTOM - the 1.16.5beta3 seems to default it�  and I
>    can't see how
>    >>�  �  to not use it. They asked I not use MTOM..
>    >>�  �  Jim
>    >>
>    >>�  �  On Fri, Oct 14, 2016 at 4:41 AM, Thomas Raddatz
>    >>�  �  <[1][13]thomas.raddatz@xxxxxx> wrote:
>    >>
>    >>�  �  �  Jim,
>    >>�  �  �  Actually WSDL2RPG should automatically create a MIME
>    message, as
>    >>�  �  �  soon as you called * _Attachments_addFile() to add a file as
>    an
>    >>�  �  �  attachment to the soap request message.
>    >>�  �  �  For example:
>    >>�  �  �  // Attach file to request message.
>    >>�  �  �  DownloadAttachment12_setAttachment_Attachments_addFile(
>    >>�  �  �  �  �  � path: 'text/plain': WSDL_MIME_BINARY);
>    >>�  �  �  // Set the parameter values of the request message
>    >>�  �  �  // of the web service.
>    >>�  �  �  //�  �  �  assign values here
>    >>�  �  �  requestMessage.fileName = path;
>    >>�  �  �  // Now let's call the web service.
>    >>�  �  �  setAttachmentResponse =
>    >>�  �  �  �  �  � DownloadAttachment12_setAttachment(
>    >>�  �  �  �  �  �  �  �  � requestMessage:
>    >>�  �  �  �  �  �  �  �  � errText);
>    >>�  �  �  Please check the debug log, whether or not WSDL2RPG created
>    a MIME
>    >>�  �  �  message. A MIME starts with:
>    >>�  �  �  MIME-Version: 1.0
>    >>�  �  �  Content-Type: multipart/related;
>    >>�  �  �  �  �  �  �  �  �  type="application/soap+xml";
>    >>�  �  �  �  �  �  �  �  �  boundary="MIMEBoundary_
>    20161014102651910000_791705";
>    >>�  �  �  �  �  �  �  �  �  start="<[2]C1648006CDC119E1A5DC00
>    >>�  �  �  [14]04AC1AF51A.2@xxxxxxxxxxx>"
>    >>�  �  �  Each attachment is separte by a "mime boundary", which looks
>    like
>    >>�  �  �  this:
>    >>�  �  �  sendraw(): entered
>    >>�  �  �  --MIMEBoundary_20161014102651910000_791705
>    >>�  �  �  Content-Type: application/soap+xml;
>    action="[3][15]http://tools400.de/
>    >>�  �  �  wsdl2rpg/webservice/sample/downloadattachment/service/
>    setAttachment"
>    >>�  �  �  Content-Transfer-Encoding: binary
>    >>�  �  �  Content-ID: <[4][16]C1648006CDC119E1A5DC0004AC
>    1AF51A.2@xxxxxxxxxxx>
>    >>�  �  �  <?xml version="1.0" encoding="utf-8"?><soapenv:Envelope
>    >>�  �  �  xmlns:soapenv="[5][17]http://www.
>    w3.org/2003/05/soap-envelope"
>    >>�  �  �  xmlns:tns="[6][18]http://tools400.
>    de/wsdl2rpg/webservice/sample/
>    >>�  �  �  downloadattachment/service"><soapenv:Body><tns:
>    >>�  �  �  setAttachmentRequest><fileName>Hello
>    World.txt</fileName></tns:
>    >>�  �  �  setAttachmentRequest></soapenv:Body></soapenv:Envelope>
>    >>�  �  �  --MIMEBoundary_20161014102651910000_791705
>    >>�  �  �  Content-Type: text/plain;
>    >>�  �  �  �  �  �  �  �  �  name="Hello World.txt"
>    >>�  �  �  Content-Transfer-Encoding: binary
>    >>�  �  �  Content-ID: <[7][19]C1099006CDC119E1A5DC0004AC
>    1AF51A.1@xxxxxxxxxxx>
>    >>�  �  �  Hello World!
>    >>�  �  �  --MIMEBoundary_20161014102651910000_791705--
>    >>�  �  �  Thomas
>    >
> 
>    > ------------------------------------------------------------
>    -----------
>    > This is the FTPAPI mailing list.�  To unsubscribe, please go to:
>    > [20]http://www.scottklement.com/mailman/listinfo/ftpapi
>    > ------------------------------------------------------------
>    -----------
>    >
>    -----------------------------------------------------------------------
>    This is the FTPAPI mailing list.�  To unsubscribe, please go to:
>    [21]http://www.scottklement.com/mailman/listinfo/ftpapi
>    -----------------------------------------------------------------------
> 
> References
> 
>    1. mailto:thomas.raddatz@xxxxxxxxxxx
>    2. mailto:254BE006E6C519E1A5DC0004AC1AF51A.2@xxxxxxxxxxx
>    3. mailto:6ABEC006E6C719E1A5DC0004AC1AF51A.2@xxxxxxxxxxx
>    4. mailto:A56940016BE319D5B0040004AC0C3458.1@xxxxxxxxxxx
>    5. mailto:cid%3AA56940016BE319D5B0040004AC0C3458.1@xxxxxxxxxxx
>    6. http://www.w3.org/2004/08/xop/include
>    7. http://www.w3.org/2003/05/soap-envelope
>    8. http://www.w3.org/2005/08/addressing
>    9. http://www.w3.org/2005/08/addressing/soap/fault
>   10. tel:2016-10-15-16
>   11. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
>   12. mailto:ftpapi-bounces@xxxxxxxxxxxxxxxxxxxxxx
>   13. mailto:thomas.raddatz@xxxxxx
>   14. mailto:04AC1AF51A.2@xxxxxxxxxxx
>   15. http://tools400.de/
>   16. mailto:C1648006CDC119E1A5DC0004AC1AF51A.2@xxxxxxxxxxx
>   17. http://www.w3.org/2003/05/soap-envelope
>   18. http://tools400.de/wsdl2rpg/webservice/sample/
>   19. mailto:C1099006CDC119E1A5DC0004AC1AF51A.1@xxxxxxxxxxx
>   20. http://www.scottklement.com/mailman/listinfo/ftpapi
>   21. http://www.scottklement.com/mailman/listinfo/ftpapi
> 
> 
> 
> -----------------------------------------------------------------------
> This is the FTPAPI mailing list.  To unsubscribe, please go to:
> http://www.scottklement.com/mailman/listinfo/ftpapi
> -----------------------------------------------------------------------
> 
-----------------------------------------------------------------------
This is the FTPAPI mailing list.  To unsubscribe, please go to:
http://www.scottklement.com/mailman/listinfo/ftpapi
-----------------------------------------------------------------------