W3C home > Mailing lists > Public > www-lib@w3.org > April to June 2002

Re: Post document data and getting the results back into a string.

From: yongjin_cho <yongjin_cho@zionex.com>
Date: Fri, 19 Apr 2002 03:01:01 -0400 (EDT)
Message-ID: <000601c1e770$3c6d6440$4201a8c0@kino>
To: <www-lib@w3.org>
hi !
I can get the response string into a chunk by this..
It comes from post.c, postform.c in examples.
 I've just modified that.
If u see terminate_handler callback function, u will know how it works.

======================

#include "WWWLib.h"
#include "WWWInit.h"


HTChunk * chunk = NULL;

PUBLIC HTChunk * PostAnchorToChunk (HTParentAnchor *    source,
                         HTAnchor *             destination,
                         HTRequest *            request)

{
    if (source && destination && request) {
        HTChunk * chunk = NULL;
        HTStream * target = HTStreamToChunk(request, &chunk, 0);
        HTRequest_setOutputStream(request, target);
        if (HTPostAnchor(source, destination, request) != NULL)
            return chunk;
        else {
            HTChunk_delete(chunk);
            return NULL;
        }
    }
    return NULL;
}

PRIVATE int terminate_handler (HTRequest * request, HTResponse * response,
                               void * param, int status)
{
    char * string;
    string = HTChunk_toCString(chunk);
    printf("string : %s\n", string);
    HT_FREE(string);

    /* We are done with this request */
    HTRequest_delete(request);

    /* Terminate libwww */
    HTProfile_delete();
    
    exit(0);
}

int main (int argc, char ** argv)
{
    HTRequest * request = NULL;
    HTParentAnchor * src = NULL;
    HTAnchor * dst = NULL;
    char * dst_str = NULL;
    char * data = NULL;

    /* Create a new premptive client */
    HTProfile_newNoCacheClient("libwww-POST", "1.0");

    /* Add our own filter to update the history list */
    HTNet_addAfter(terminate_handler, NULL, NULL, HT_ALL, HT_FILTER_LAST);

    /* Set the timeout for long we are going to wait for a response */
    HTHost_setEventTimeout(20000);


    /* Handle command line args */
    if (argc >= 3) {
        dst_str = argv[1];
        data = argv[2];
    }
    else
        return -1;


    if (data && *data && dst_str && *dst_str)
    {
        request = HTRequest_new();
        HTRequest_setOutputFormat(request, WWW_RAW);

        dst = HTAnchor_findAddress(dst_str);
        src = HTTmpAnchor(NULL);
        HTAnchor_setDocument(src, data);
        HTAnchor_setLength(src, strlen(data));

        chunk = PostAnchorToChunk(src, dst, request);
        HTEventList_loop(request);
    }
    return 0;
}    
Received on Friday, 19 April 2002 03:38:07 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 23 April 2007 18:18:41 GMT