2014-11-21 2 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

+0

Я не могу напечатать ответ, потому что я не могу получить ответ: S, его ответ вроде null. Но вчера это работает, и я получаю http-заголовок с печатью (re) – jomag

+0

за rfc, вы пропускаете CRLF в своей «HEAD» Request-Line http://tools.ietf.org/html/rfc2616#section-5 – Victory

ответ

0

Вы забыли оператор возврата, пожалуйста, обновите:

def prueba(self): 
    return n.get_http('www.website.com', 80, 'HEAD/HTTP/1.1\r\n\r\n') 
Смежные вопросы