2014-11-21 63 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')