Beefy Boxes and Bandwidth Generously Provided by pair Networks
Don't ask to ask, just ask

Re^2: Decode perl cgi response in C

by stenasc (Novice)
on Jul 22, 2013 at 08:25 UTC ( #1045614=note: print w/replies, xml ) Need Help??

in reply to Re: Decode perl cgi response in C
in thread Decode perl cgi response in C

Yes, I have write some C TCP/UDP web clients and servers in the past and I don't have an issue there. What I have is an embedded system, that needs to process the test output from a cgi file. I hust need a little info on the way to decode this data. I send a post command to the cgi file on the server and wait for a response. Instead of the desired test response, which should be "Hello", I receive the text responses "Download" and "OK". I will read up on cURL to find out the details on the ports so I can decode the text.

Replies are listed 'Best First'.
Re^3: Decode perl cgi response in C
by samwyse (Scribe) on Jul 24, 2013 at 14:20 UTC
    I get the feeling that you want help on the HTTP protocol. If you don't have (or can't use) any libraries to help, a minimal method would be to open a TCP connection and send a request message, which consists of the following:
    • A request line, for example GET /images/logo.png HTTP/1.1, which requests a resource called /images/logo.png from the server.
    • Request Headers, such as Accept-Language: en
    • An empty line.
    • An optional message body.
    The request line and headers must all end with <CR><LF> (that is, a carriage return character followed by a line feed character). The empty line must consist of only <CR><LF> and no other whitespace. In the HTTP/1.1 protocol, all headers except Host are optional (but in practice, it's also optional if there's only one name associated with the IP address). A request line containing only the path name is accepted by servers to maintain compatibility with HTTP clients before the HTTP/1.0 specification.

    You will then be able to read the response message, which consists of the following:

    • A Status-Line (for example HTTP/1.1 200 OK, which indicates that the client's request succeeded)
    • Zero of more Response Headers, such as Content-Type
    • An empty line
    • An optional message body
    The Status-Line and headers must all end with <CR><LF> (a carriage return followed by a line feed). The empty line must consist of only <CR><LF> and no other whitespace.

    On my computer, entering the command "telnet 80" returns the message "Connecting To". If I then enter the command "GET / HTTP/1.1" and hit the <Enter> key twice, I get the following:

    HTTP/1.1 200 OK Via: 1.1 ETC-USRPXY-02 Connection: Keep-Alive Proxy-Connection: Keep-Alive Content-Length: 47589 Date: Wed, 24 Jul 2013 14:08:33 GMT Age: 74 Content-Type: text/html ETag: "b9e5-4e24268fd6b00" Server: Apache/2.2.24 Accept-Ranges: bytes Last-Modified: Wed, 24 Jul 2013 14:06:04 GMT <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html xmlns="" xml:lang="en"> <head>
    ... followed by roughly 47 KB of other data. You can experiment by using telnet to connect to your server and see what you get back.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1045614]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (10)
As of 2017-12-15 18:01 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (439 votes). Check out past polls.