Sample code for 30+ languages & platforms
C

HTTP Verb - How to use any Verb (GET, PUT, POST, DELETE, PROPFIND, etc.)

The HttpVerb property may be set to anything. Typically, it is set to the common/standard HTTP verbs such as GET, POST, PUT, DELETE, etc. It can be set to anything, including custom verbs that only have meaning to your particular server-side application.

This example demonstrates how to compose an HTTP request using the PROPFIND verb, which is something one might use with a WebDAV request.

This example composes the following HTTP request:

   PROPFIND  /container/ HTTP/1.1
   Host: www.foo.bar
   Depth: 1
   Content-Type: text/xml; charset="utf-8"
   Content-Length: xxxx

   <?xml version="1.0" encoding="utf-8" ?>
   <D:propfind xmlns:D="DAV:">
     <D:allprop/>
   </D:propfind>

Chilkat C Downloads

C
#include <C_CkHttpRequest.h>
#include <C_CkXml.h>

void ChilkatSample(void)
    {
    HCkHttpRequest req;
    HCkXml xml;
    const char *requestMime;

    req = CkHttpRequest_Create();

    //  The ContentType, HttpVerb, and Path properties should
    //  always be explicitly set.
    CkHttpRequest_putHttpVerb(req,"PROPFIND");
    CkHttpRequest_putPath(req,"/container/");
    CkHttpRequest_putContentType(req,"text/xml");
    CkHttpRequest_putCharset(req,"utf-8");
    CkHttpRequest_putSendCharset(req,TRUE);

    CkHttpRequest_AddHeader(req,"Depth","1");

    xml = CkXml_Create();
    CkXml_putTag(xml,"propfind");
    CkXml_AddAttribute(xml,"xmlns:D","DAV:");
    CkXml_NewChild2(xml,"allprop","");

    CkHttpRequest_LoadBodyFromString(req,CkXml_getXml(xml),"utf-8");

    //  View the request that would be sent if HttpSReq was called:
    requestMime = CkHttpRequest_generateRequestText(req);
    printf("%s\n",requestMime);

    //  A few important comments about the HTTP request that is generated:
    //  
    //  1) The Content-Length header is automatically generated based on the actual length of the MIME message
    //     that follows the intial (topmost) MIME header.
    //  2) The HOST header will automatically get filled in with the actual domain when HttpSReq
    //     is called.


    CkHttpRequest_Dispose(req);
    CkXml_Dispose(xml);

    }