2016-09-15 3 views
0

Я пытаюсь запросить у пользователя URL-адрес, чтобы он мог читать любую страницу, но при запуске моей программы я все время получаю ошибку 400 ошибок.Что такое синтаксис для отправки запроса GET-сокета с пользовательским вводом

Я установил соединение сокета с хостом с моего ввода. Но когда я пытаюсь отправить запрос GET, он взрывается ко мне с ошибкой 400 ошибок. Что мне делать, пожалуйста?

import socket 

mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
try: 
    url = raw_input('Enter - ') 
    splt = url.split('/') 
    mysock.connect((splt[2], 80)) 
    mysock.send('GET url \n\n') 
except: 
    print 'invalid URL' 

while True: 
    data = mysock.recv(512) 
    if (len(data) < 1): 
     break 
    print data 
mysock.close() 
+1

Возможно, вы захотите использовать [urllib2] (https://docs.python.org/2/library/urllib2.html) или [запросы] (http://docs.python-requests.org/en/master /). – albert

+0

Вы * определенно * хотите использовать 'запросы' вместо этого. –

+0

, пожалуйста, помогите мне решить эту проблему, используя urllib2. запрашивает у пользователя URL, чтобы он мог читать любую веб-страницу. Вы можете использовать split ('/'), чтобы разбить URL-адрес на своих компонентов, чтобы вы могли извлечь имя хоста для вызова сокета. Добавьте проверку ошибок с помощью try и за исключением обработки условия, когда пользователь вводит неверно отформатированный или несуществующий URL-адрес. –

ответ

0

Мне кажется, что вы не вызываете GET должным образом. Когда вы пишете

mysock.send ('GET URL \ N \ N')

Вы не встраивание переменной "URL" в команду, но просто строку с фразой «URL ».

Не знаю, но это может стоить проверить.

Мой собственный код выглядит следующим образом:

CMD = 'GET '+ адрес +' HTTP/1.0 \ г \ п \ г \ п'
CMD = cmd.encode()
mysock. (cmd)

Адрес, в котором «адрес» - это имя адреса, введенного пользователем.

 Смежные вопросы

  • Нет связанных вопросов^_^