Good news - I found a public webservice at http://rpc.geocoder.us/service/soap/ and ns_http works great with that with my AOLserver version.
So, does anybody have any advice re using an SSL version? Are sockets the way to go to do this? thanks Brian ________________________________________ From: AOLserver Discussion [aolser...@listserv.aol.com] On Behalf Of Fenton, Brian [brian.fen...@quest.ie] Sent: 03 February 2010 11:58 To: AOLSERVER@LISTSERV.AOL.COM Subject: Re: [AOLSERVER] differences between ns_httppost and sockets? Hi Jeff, many thanks for that pointer! That makes a lot of sense. Unfortunately it's not working for me with that particular StockQuote web service. Now I know the web service is quite slow but it works fine with the sockets approach. I tried different timeouts but no joy. I wonder is it my AOLserver's (4.0.10) version of ns_http? I can't seem to find any free web services to test against - that webserviceX.NET is very slow. My other question is - I'm hoping to do an SSL version once I have the basic code working. I don't think there's a HTTPS version of ns_http, is there? At least there is an SSL version of ns_sockopen (ns_openssl_sockopen). Would that be the way to go? Here's my code: set result "" set soap_request {<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetQuote xmlns="http://www.webserviceX.NET/"><symbol>GOOG</symbol></GetQuote></soap:Body></soap:Envelope>} set type "text/xml" set rqset [ns_set new rqset] ns_set put $rqset SOAPAction "http://www.webserviceX.NET/GetQuote" if {[catch {set rqid [ns_http queue POST "http://www.webserviceX.NET/stockquote.asmx" $soap_request $rqset]} err ]} { set result $err ns_log Notice "Brian error result=$result" } else { set status [ns_http wait $rqid result 60] ns_log Notice "Brian after wait rqid=$rqid status=$status result=$result" } ns_return 200 text/plain $result Brian ________________________________________ From: AOLserver Discussion [aolser...@listserv.aol.com] On Behalf Of Jeff Rogers [dv...@diphi.com] Sent: 03 February 2010 07:12 To: AOLSERVER@LISTSERV.AOL.COM Subject: Re: [AOLSERVER] differences between ns_httppost and sockets? Hi Brian, ns_httppost does url-encoding of the name-value pairs you pass in as qsset. For SOAP you need to just post the xml message, not as a name-value pair. If you sniffed the actual request you're sending with ns_httppost it would be something like Message=<?xml version="1.0" ..... Try using ns_http queue instead. set rqid [ns_http queue POST http://www.webserviceX.NET/stockquote.asmx $soap_request $rqset] ns_http wait $rqid result http://panoptic.com/wiki/aolserver/Ns_http for reference. -J Fenton, Brian wrote: > Hi > > I`m having some difficulties that hopefully somebody here could assist me > with. I`m hand-coding a request to a SOAP service and I can`t get it working > with AOLserver`s ns_httppost command, but it works fine using sockets. I`m > wondering could it be some headers or encoding that ns_httppost does? Or > maybe a timeout? I`ve seen some articles on the web that suggest putting \r\n > between the headers and the body (which you can see in the sockets example) - > does ns_httppost automatically do that for me? If not how would I do it? > > I`m using AOLserver 4.0.10 > > > Here`s the code using ns_httppost that doesn`t work - just returns empty > string: > > set result "" > set soap_request {<?xml version="1.0" encoding="utf-8"?><soap:Envelope > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetQuote > xmlns="http://www.webserviceX.NET/"><symbol>GOOG</symbol></GetQuote></soap:Body></soap:Envelope>} > set type "text/xml" > set rqset [ns_set new rqset] > ns_set put $rqset SOAPAction "http://www.webserviceX.NET/GetQuote" > set qsset [ns_set new qsset] > ns_set put $qsset Message $soap_request > set cmd {set page [ns_httppost "http://www.webserviceX.NET/stockquote.asmx" > $rqset $qsset $type ]} > if {[catch $cmd errmsg]} { > set result $errmsg > } else { > set result $page > } > ns_return 200 text/plain $result > > > > And here`s the sockets program (based on some fine code written by Tom > Jackson) - this works perfectly (abeit it takes a while to come back): > > set SOAP {<?xml version="1.0" encoding="utf-8"?> > <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xmlns:xsd="http://www.w3.org/2001/XMLSchema" > xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> > <soap:Body> > <GetQuote xmlns="http://www.webserviceX.NET/"> > <symbol>GOOG</symbol> > </GetQuote> > </soap:Body> > </soap:Envelope>} > > set length [string length $SOAP] > set headers "" > set fds [ns_sockopen www.webserviceX.NET 80] > set rid [lindex $fds 0] > set wid [lindex $fds 1] > puts $wid "POST /stockquote.asmx HTTP/1.1 > Host: www.webservicex.net > Content-Type: text/xml; charset=utf-8 > Content-Length: $length > SOAPAction: \"http://www.webserviceX.NET/GetQuote\" > $SOAP" > flush $wid > while {[set line [string trim [gets $rid]]] != ""} { > lappend headers $line > } > set page [read $rid] > close $rid > close $wid > > ns_return 200 text/plain " > Sent: > POST /stockquote.asmx HTTP/1.1 > Host: www.webservicex.net > Content-Type: text/xml; charset=utf-8 > Content-Length: $length > SOAPAction: \"http://www.webserviceX.NET/GetQuote\" > $SOAP > Received: > [join $headers "\n"]\n\n$page" > > Any suggestions? > Many thanks, > Brian > > > -- > AOLserver - http://www.aolserver.com/ > > To Remove yourself from this list, simply send an email > to<lists...@listserv.aol.com> with the > body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: > field of your email blank. -- AOLserver - http://www.aolserver.com/ To Remove yourself from this list, simply send an email to <lists...@listserv.aol.com> with the body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank. -- AOLserver - http://www.aolserver.com/ To Remove yourself from this list, simply send an email to <lists...@listserv.aol.com> with the body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank. -- AOLserver - http://www.aolserver.com/ To Remove yourself from this list, simply send an email to <lists...@listserv.aol.com> with the body of "SIGNOFF AOLSERVER" in the email message. You can leave the Subject: field of your email blank.