Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

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.


Comment on Re^2: Decode perl cgi response in C
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 www.perlmonks.org 80" returns the message "Connecting To www.perlmonks.org...". 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="http://www.w3.org/1999/xhtml" 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?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1045614]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (11)
As of 2014-10-23 18:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    For retirement, I am banking on:










    Results (128 votes), past polls