Как упаковать переменную в запрос HTTP GET в сокете.send () — Python 2.7

Во-первых спасибо за чтение!

Во-вторых, да, я пытался найти ответ! 🙂 Возможно, я не нашел его, потому что я не использую правильные слова, чтобы описать мою проблему, но прошло около 4 часов, что я пытался выяснить это сейчас, и я получаю немного петля, пытаясь собрать его вместе самостоятельно.

Я очень новичок в программировании. Python-мой первый язык. Я на третьем курсе Python. У меня есть задание использовать библиотеку сокетов (не библиотеку urllib — я знаю, как это сделать), чтобы сделать сокет и использовать GET для получения информации. Проблема в том, что программа должна принимать необработанные входные данные для рассматриваемого URL.

У меня есть все остальное так, как я хочу, но мне нужно знать синтаксис, который я должен использовать внутри моего запроса «GET», чтобы сообщение HTTP включало запрошенный путь к документу.

Я пробовал (очевидно, не все вместе lol):

mysock.send('GET (url) HTTP/1.0nn')
mysock.send( ('GET (url) HTTP:/1.0nn'))
mysock.send(('GET (url) HTTP:/1.0nn'))
mysock.send("GET (url) HTTP/1.0nn")
mysock.send( ("'GET' (url) HTTP:/1.0nn"))
mysock.send(("'GET' (url) 'HTTP:/1.0nn'"))

и:

в основном все другие конфигурации выше (, ((, ( (, ‘, » комбинации, перечисленные выше.

Я также пытался:

— Сначала создайте строку с помощью переменной ‘url’, а затем включите ее в mysock.отправить (строка)
— Снова с теорией «string-first», но на этот раз я использовал %r для ссылки на мой пользовательский ввод (поэтому ‘GET %r HTTP / 1.0nn’ % url в основном)

Я читал вопросы здесь, другие веб-сайты программирования, всю главу в книге и все лекции/заметки в Интернете, я читал статьи о библиотеке сокетов и т. д.send (), и конечно статьи на GET запросы… но мне явно чего-то не хватает. Кажется, большинство не используют библиотеку сокетов, когда они могут использовать urllib, и я не виню их!!

Спасибо еще раз…

2 ответа

  1. Кто-то из университета написал мне, что переменная url может быть объединена с синтаксисом GET и назначена строковой переменной, которая затем может быть вызвана .send (concatenatedvariable) — я упоминал, что пытался, но пропустил, что GET требует места после слова «GET», поэтому, конечно, concatenating не включал пространство, и это взорвало его. В случае, если кто-то еще хочет знать 🙂

  2. FYI: полностью quallified URL-адрес разрешен только в HTTP/1.1 запросов. Это не норма, хотя, поскольку HTTP / 1.1 требует установки Hostзаголовка. Соответствующая часть чтения была бы RFC 7230, sec. 3.1.1 и, возможно, RFC 3986 . Синтаксис параметров в значительной степени заимствован из формата CGI. Однако она никоим образом не навязывается. В двух словах, все вместе будет выглядеть так на проводе:

    GET /path?param1=value1&param2=value2 HTTP/1.1
    Host: example.com
    

    В качестве заключительного Примечания: разделителем строк в HTTP является CRLF (\r\n). Для надежности, простая подача линии также приемлема, но не рекомендуется.