2014-11-21 40 views
0

我的代码使用套接字发送一个http请求,然后保存响应。它昨天适用于我,但是今天我无法收到响应。我需要使用不是httplib或urllib的套接字。我不知道如果代码不工作或我的python安装是疯狂的。谢谢!没有响应的Python套接字

import socket 
import logging 


def get_http(target, port, request): 
    """ 
    Method that sends an HTTP request and returns the response 

    :param target: 
    :type target: 

    :return: 
    :rtype: str 
    """ 
    try: 
     s = socket.create_connection((target, port)) 
     s.sendall(request.encode()) 
     response = repr(s.recv(2024).decode()) 
    except socket.error as e: 
     logging.error('Failed to create connection: %s', e.strerror) 
    return response 

import lib.netgrab as n 


class Probe(): 

    def __init__(self): 
     super(Probe, self).__init__() 

    def prueba(self): 
     n.get_http('www.website.com', 80, 'HEAD/HTTP/1.1\r\n\r\n') 

pr = Probe() 
re = pr.prueba() 
print(re) 
+2

你得到什么错误? – Victory 2014-11-21 23:28:08

+0

我无法打印响应,因为我无法获得响应:S,它的响应为空。但昨天它的工作原理和我得到的打印(重) – jomag 2014-11-21 23:34:38

+0

每个rfc你缺少在你的“头”请求线的CRLF的http标题http://tools.ietf.org/html/rfc2616#section-5 – Victory 2014-11-21 23:38:06

回答

0

你已经忘了你的return语句,请更新:

def prueba(self): 
    return n.get_http('www.website.com', 80, 'HEAD/HTTP/1.1\r\n\r\n')