HTTP Post Using C

HTTP post requests are very easy to handle by using HTML forms and other languages where they are natively supported. Basically, a request is nothing but a socket-based communication between the browser and Web server. The Hypertext Transfer Protocol, HTTP/1.1 (http://www.w3.org/Protocols/rfc2616/rfc2616.html), documents the standards.

The code in this article is based on these standards and has been tested to act as an HTTP client to make a post request and retrieve the response from Web server. Through the open socket, write and read are simple tasks to perform. Sending the requests in order and in the correct format is essential.

A client request looks like the following:

POST
<Post program>
   HTTP/1.0
Accept: */*
User-Agent: Mozilla/4.0
Content-Length: <length of parameters>
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Host: <hostname>
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <base64 encoded login name : password>

<param1=val1&param2=val2>

The server responds with the header part and body part of the message.

Header part:

HTTP/1.0 200
Date: Thu 9 Dec 2004 12:23:50 GMT
Server: Archive-Appliance
Connection: close
Content-type: text/xml

The HTTP/1.0 200 status states everything went okay. For instance, it can be HTTP/1.0 404 if you made a wrong request. The body part is whatever the post script or program's output is.



Downloads

Comments

  • Eng.student

    Posted by Jouni on 12/10/2012 09:30am

    I just spent more than hour to solve why my POST array member wasn't set at all with the example code. I found that the first member gets line break (\r\n) as the first character for the member name. So, there is one, but hazardous, line break (i.e END_RQ("\r\n")) too much at the line just before the line where the parameters get sent "SEND_RQ(parameters)". That's because the content-type line includes already a one line break at the end.

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • As all sorts of data becomes available for storage, analysis and retrieval - so called 'Big Data' - there are potentially huge benefits, but equally huge challenges...
  • The agile organization needs knowledge to act on, quickly and effectively. Though many organizations are clamouring for "Big Data", not nearly as many know what to do with it...
  • Cloud-based integration solutions can be confusing. Adding to the confusion are the multiple ways IT departments can deliver such integration...

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date