Eggerd
Eggerd

Reputation: 1

Raw HTTP client not returning any data

import socket

host = 'www.google.com'
port = 80

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


try :
    client.connect((host, port))
except socket.error:
    print ("Err")

package = '00101'

package.encode('utf-8')


client.sendall(package.encode(encoding = 'utf-8'))

response = client.recv(4096)


print (response.decode('UTF-8')

I kept getting b'' as my return, so I'm trying to decode it. The error I receive is unexpected EOF while parsing. Should I not include the decoding() function in my printing? I've tried printing only response, the .decode() function did not decode. What should I try?

Upvotes: 0

Views: 58

Answers (1)

Lennart
Lennart

Reputation: 504

You need to send a valid HTTP request. For example:

package = b'''GET /HTTP/1.1
Host: www.google.com

'''

client.sendall(package)

Which correctly returns a redirect on my machine. Note the empty line at the end of package, which ends the request.

When you send b'00101' and start reading, the google server has not yet processed your request and returns nothing. By sending a trailing newline (package = b'00101\n') it will start processing your request, and you will get:

...
<p>Your client has issued a malformed or illegal request.  <ins>That’s all we know.</ins>

Upvotes: 1

Related Questions