Re: Performing a single Request

Stewart Johnson <[email protected]>
Newsgroups gmane.comp.lib.libwww
Message-ID <[email protected]>

Phooey. I just noticed:

http://www.w3.org/Library/src/HTProfil.html

"Do not use preemptive profiles if you are doing PUT or POST requests."

So I've switched back to HTProfile_newRobot().

On Wednesday 28 May 2003 2:51 am, Stewart Johnson wrote:
> Hi Nino --
>
> It just so happens I'm working on this right now. Here's what I'm working
> with at the moment (cmments below):
>
> --------- begin code ----------
> #include "WWWLib.h"
> #include "WWWInit.h"
> #include "WWWSSL.h"
>
> int main ()
> {
>     HTRequest * request = NULL;
>     HTAnchor * anchor = NULL;
>     HTAssocList * formfields = NULL;
>     char uri[] = "https://accounts.internode.on.net/cgi-bin/padsl-usage";
>     char arg1[] = "username=XXXX";
>     char arg2[] = "password=YYYY";
>     formfields = HTAssocList_new();
>     HTParseFormInput(formfields, arg1);
>     HTParseFormInput(formfields, arg2);
>
>     /* create a new pre-emptive client, doesn't use event loop */
>     HTProfile_newPreemptiveClient("Sample Post Client", "0.1");
>
>     /* SSL initialisation */
>     HTSSL_protMethod_set (HTSSL_V23);
>     HTSSL_verifyDepth_set (2);
>     HTSSLhttps_init(NO);
>
>     /* Create a request */
>     request = HTRequest_new();
>
>     /* Get an anchor object for the URI */
>     anchor = HTAnchor_findAddress(uri);
>
>     /* Post the data and get the result in a chunk */
>     HTChunk * result = HTPostFormAnchorToChunk(formfields, anchor,
> request);
>
>     printf("The result from the server was: \"%s\"\n",
> HTChunk_data(result));
>
>     HTAssocList_delete(formfields);/* Clean up the form fields */
>     HTRequest_delete(request);  /* Destroy the Request object */
>     HTSSLhttps_terminate();     /* Unregister SSL app support */
>     HTProfile_delete();         /* Terminate HTTP client      */
>     return 0;
> }
>
> --------- end code ----------
>
> This seems to be heading down the right track, I'm no longer using the
> event loop. I got the idea of using HTProfile_newPreemptiveClient from:
>
> http://www.w3.org/Library/Examples/libapp_4.c
>
> The only problem now is that it's not waiting for the request to complete:
> the request is deleted before it's finished being handled:
> [stew@uno cpp]$ g++ -o runme simple.c `libwww-config --cflags`
> `libwww-config --libs` -L/usr/lib -lwwwssl
> [stew@uno]$ ./runme
> Looking up accounts.internode.on.net
> Looking up accounts.internode.on.net
> Contacting accounts.internode.on.net
> The result from the server was: "(null)"
> Interrupted!
>
> Like I said, I'm still working on it! Any ideas appreciated!
>
> Stewart.
>
> On Wednesday 28 May 2003 2:28 am, you wrote:
> > Dear Stewart,
> > I'm having the same problem too..
> >
> > ---------- Original Message ----------------------------------
> > From: Stewart Johnson <[email protected]>
> > Date: Mon, 26 May 2003 01:27:08 +0930
> >
> > >G'day --
> > >
> > >I've been using the the W3C libwww for a little while now, and I've
> > > generally had success. I'm having trouble figuring a new problem out,
> > > and I'm looking for some advice. Hopefully someone can find the time to
> > > steer me in the right direction! :^)
> > >
> > >The tool I'm currently writing only ever needs to perform a POST request
> > > on a single server. It does this request once every half an hour, so
> > > for all intents and purposes the requests happen in isolation. I'm
> > > writing this tool in C++.
> > >
> > >I have everything working okay, but I can't help but think there's an
> > > easier (and less verbose) way to do it. I'm initialising the library,
> > > creating my HTRequest and calling HTPostFormAnchorToChunk to get my
> > > result. That all seems correct, my problem is the next part:
> > >
> > >I'm entering the eventloop using HTEventList_loop. I've previously
> > > registered a terminate_handler callback to catch the HTResponse of my
> > > HTRequest and save the status in the HTRequest's context, and then call
> > > HTEventList_stopLoop. That seems like a whole bunch of unnecessary
> > > effort. In addition, it feels ugly because the terminate_handler is a
> > > static function.
> > >
> > >Is it easy to replace the HTEventList_loop? Is there another way of
> > > firing off my single HTRequest and catching the response, preferably
> > > all within the one function, rather than using a callback?
> > >
> > >Any advice is greatly appreciated.
> > >
> > >TIA,
> > >Stewart.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.