From: Bob D. <bob...@ya...> - 2008-08-20 15:39:17
|
gsoap's discussion of MIME support is here http://www.cs.fsu.edu/~engelen/soapdoc2.html#tth_sEc13.2 Also, I should note that I hacked MIME::Entity to remove that multipart MIME message, and gsoap no longer gave the error about no XML element tag. So I'm pretty sure that's not supposed to be in there in the absence of any sort of XML around it. But after this hack, gsoap and SOAP::Lite just sat there indefinitly, and when I canceled it, it said: SOAP 1.1 fault: SOAP-ENV:Client [no subcode] "End of file or no input: An established connection was aborted by the software in your host machine." So now I'm wondering if SOAP::Lite is terminating the connection properly on its side (since I'm not getting any response back from the server, unless I cancel it) Thanks for everyone's help. Bob --- On Wed, 8/20/08, Paul Kulchenko <pau...@ya...> wrote: From: Paul Kulchenko <pau...@ya...> Subject: Re: [Soaplite-devel] [Fwd: SOAP with Attachments not supported?] To: "Martin Kutter" <mar...@fe...>, "Robbie Bow" <rob...@gm...> Cc: "soaplite-devel" <soa...@li...>, bob...@ya... Date: Wednesday, August 20, 2008, 2:44 PM I don't see anything wrong on the S::L side. Bob, do you know if gSOAP supports MIME? "Supports single/multipart MIME attachment (parsing side only)." This used to be the case, but since then Byrne added MIME support for generated messages too. The description needs to be updated. Paul. --- On Tue, 8/19/08, Robbie Bow <rob...@gm...> wrote: > From: Robbie Bow <rob...@gm...> > Subject: Re: [Soaplite-devel] [Fwd: SOAP with Attachments not supported?] > To: "Martin Kutter" <mar...@fe...> > Cc: "soaplite-devel" <soa...@li...>, bob...@ya... > Date: Tuesday, August 19, 2008, 3:25 PM > Sorry, I'm afraid I don't. I did once look at > getting the MIME tests working > but really didn't know what I was doing :( > > 2008/8/19 Martin Kutter <mar...@fe...> > > > Hi, > > > > does someone know why this call fails? > > > > Unfortunately, I'm not a MIME expert. > > > > Martin > > > > -------- Weitergeleitete Nachricht -------- > > > Von: Bob Dole > <bob...@ya...> > > > Antwort an: bob...@ya... > > > An: kut...@us... > > > Betreff: SOAP with Attachments not supported? > > > Datum: Mon, 18 Aug 2008 12:50:07 -0700 (PDT) > > > > > > Quick prefix which could make it so that you > don't have to answer the > > > long question: does "Supports > single/multipart MIME attachment > > > (parsing side only)." mean that a SOAP::Lite > client can't send SwA? > > > > > > The longer question is why the following > doesn't work. I have a > > > SOAP::Lite client and a gSOAP server. I want to > send a MIME file from > > > one to the other. > > > > > > Here's the message I sent to the gSOAP list: > > > > ------------------------------------------------------ > > > > > > I am trying to send a MIME encoded file from a > SOAP::Lite client to a > > > gSOAP server, but the server is giving me the > following error which I > > > don't understand, since I'm not that > experienced with SOAP: > > > Error 6 fault: SOAP-ENV:Client [no subcode] > > > "No XML element tag" > > > Detail: [no detail] > > > The following is the command I run (I include the > source at the end > > > incase the raw messages don't show an obvious > error) > > > $ ./MIMEsend.pl soapcpp2.exe > > > Calling client setup > > > SOAP::Transport::new: () > > > SOAP::Serializer::new: () > > > SOAP::Deserializer::new: () > > > SOAP::Parser::new: () > > > SOAP::Lite::new: () > > > SOAP::Transport::HTTP::Client::new: () > > > Calling sendMIME > > > SOAP::Data::new: () > > > SOAP::Lite::call: () > > > SOAP::Serializer::envelope: () > > > SOAP::Serializer::envelope: sendMIME > SOAP::Data=HASH(0x1075d488) > > > SOAP::Data::new: () > > > SOAP::Data::new: () > > > SOAP::Data::new: () > > > SOAP::Data::new: () > > > SOAP::Data::new: () > > > SOAP::Transport::HTTP::Client::send_receive: > HTTP::Request=HASH > > > (0x1060ece8) > > > SOAP::Transport::HTTP::Client::send_receive: POST > > > http://192.168.0.131:1234/ HTTP/1.1 > > > Accept: text/xml > > > Accept: multipart/* > > > Accept: application/soap > > > Content-Length: 600620 > > > Content-Type: Multipart/Related; > type="text/xml"; > > > start="<main_envelope>"; > boundary="----------=_1219045514-2988-0"; cha > > > rset=utf-8 > > > SOAPAction: "capture#sendMIME" > > > This is a multi-part message in MIME format... > > > ------------=_1219045514-2988-0 > > > Content-Type: text/xml > > > Content-Disposition: inline > > > Content-Location: /main_envelope > > > Content-ID: <main_envelope> > > > <?xml version="1.0" > encoding="UTF-8"?><SOAP-ENV:Envelope > > > xmlns:namesp1="capture" > xmlns:SOAP-ENV="http://schemas.xmlsoap. > > > org/soap/envelope/" > > > > xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" > > > xmlns:xsi="http://www.w3.org/2001/XMLSchem > > > a-instance" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" SOAP- > > > > ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encodin > > > > g/"><SOAP-ENV:Body><namesp1:sendMIME><magicNumber > > > > xsi:type="xsd:int">123</magicNumber></namesp1:sendMIME></SOAP-ENV:Body > > > ></SOAP-ENV:Envelope> > > > ------------=_1219045514-2988-0 > > > Content-Type: application/exe; > name="soapcpp2.exe" > > > Content-Disposition: attachment; > filename="soapcpp2.exe" > > > Content-Transfer-Encoding: base64 > > > MIME-Version: 1.0 > > > X-Mailer: MIME-tools 5.427 (Entity 5.427) > > > > TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAA > > > ...MIME FILE... > > > TkdQQURESU5HWFhQQURESU5H > > > ------------=_1219045514-2988-0-- > > > SOAP::Transport::HTTP::Client::send_receive: > HTTP::Response=HASH > > > (0x1076f8c8) > > > SOAP::Transport::HTTP::Client::send_receive: 500 > read failed: > > > Connection reset by peer > > > Content-Type: text/plain > > > Client-Date: Mon, 18 Aug 2008 07:45:28 GMT > > > Client-Warning: Internal response > > > 500 read failed: Connection reset by peer > > > SOAP::Deserializer::deserialize: () > > > SOAP::Parser::decode: () > > > 500 read failed: Connection reset by peer at > ./MIMEsend.pl line 23 > > > SOAP::Transport::HTTP::Client::DESTROY: () > > > SOAP::Data::DESTROY: () > > > SOAP::Data::DESTROY: () > > > SOAP::Data::DESTROY: () > > > SOAP::Parser::DESTROY: () > > > SOAP::Transport::DESTROY: () > > > SOAP::Serializer::DESTROY: () > > > SOAP::Data::DESTROY: () > > > SOAP::Data::DESTROY: () > > > SOAP::Deserializer::DESTROY: () > > > SOAP::Data::DESTROY: () > > > SOAP::Lite::DESTROY: () > > > > > > > > > So my first question would be, is it because of > the "This is a multi- > > > part message in MIME format..."? Is that the > thing missing the XML > > > element it's talking about? Because > that's the only thing I can see > > > that seems to differ from the SwA spec. > > > > > > So for the record, my gSOAP code looks like this > (basically just the > > > example code from the documentation): > > > > > > int ns__sendMIME(struct soap *soap, int > magicNumber, int &result){ > > > struct soap_multipart * attachment; > > > for(attachment = soap->mime.list; attachment; > attachment = > > > attachment->next){ > > > printf("MIME attachment:\n"); > > > printf("Memory=%p\n", > (*attachment).ptr); > > > printf("Size=%ul\n", > (*attachment).size); > > > printf("Encoding=%d\n", > (int)(*attachment).encoding); > > > printf("Type=%s\n", > (*attachment).type? > > > (*attachment).type:"null"); > > > printf("ID=%s\n", > (*attachment).id? > > > (*attachment).id:"null"); > > > printf("Location=%s\n", > (*attachment).location? > > > (*attachment).location:"null"); > > > printf("Description=%s\n", > (*attachment).description? > > > (*attachment).description:"null"); > > > } > > > printf("magicNumber = %#x\n", > magicNumber); > > > if(magicNumber == 123){ > > > result = 42; > > > } > > > else{ > > > result = 0; > > > } > > > return SOAP_OK; > > > } > > > > > > My SOAP::Lite code looks like this: > > > > > > #!perl > > > use SOAP::Lite +trace => 'all'; > > > #use SOAP::Lite; > > > use SOAP::Lite::Packager; > > > use MIME::Entity; > > > my $ent = build MIME::Entity > > > Type => > "application/exe", > > > Path => $ARGV[0], > > > Filename => $ARGV[0], > > > Disposition => "attachment"; > > > print "\nCalling client > setup\n\n"; > > > $client = SOAP::Lite > > > -> > packager(SOAP::Lite::Packager::MIME->new) > > > -> parts([$ent]) > > > -> > proxy('http://192.168.0.131:1234/') > > > -> ns('capture'); > > > print "\nCalling > sendMIME\n\n"; > > > $data = SOAP::Data->name(magicNumber => > "123"); > > > $result = $client->sendMIME($data); > > > #print "result = $result\n"; > > > > > > Thanks for any help you can give! > > > > > > Bob > > > > > > > > > > ------------------------------------------------------------------------- > > This SF.Net email is sponsored by the Moblin Your Move > Developer's > > challenge > > Build the coolest Linux based applications with Moblin > SDK & win great > > prizes > > Grand prize is a trip for two to an Open Source event > anywhere in the world > > > http://moblin-contest.org/redirect.php?banner_id=100&url=/ > > _______________________________________________ > > Soaplite-devel mailing list > > Soa...@li... > > > https://lists.sourceforge.net/lists/listinfo/soaplite-devel > > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move > Developer's challenge > Build the coolest Linux based applications with Moblin SDK > & win great prizes > Grand prize is a trip for two to an Open Source event > anywhere in the world > http://moblin-contest.org/redirect.php?banner_id=100&url=/_______________________________________________ > Soaplite-devel mailing list > Soa...@li... > https://lists.sourceforge.net/lists/listinfo/soaplite-devel |