3

変数「full_req」で HTTP リクエスト文字列を作成しようとしています。HTTP リクエストは次のようになります。

GET /images/logo/ HTTP/1.1
Host: www.google.com
Connection: close

私はすでに Python コードを書いているので、「http://www.google.com/images/logo/googlelogo.png」という URL を入力すると、URL が 3 つの部分に分割されます。以下は、私が使用した変数です。

  • host(含むwww.google.com)
  • path(含む/images/logo/)
  • file(含むgooglelogo.png)
  • port(表示Noneされていますが、言うべきだと思います80

HTTP リクエスト文字列をfull_req変数に割り当てて、この変数を出力すると 3 行すべてが含まれるようにするにはどうすればよいですか?

print(full_req)

文字列連結を試みましたが、うまくいきませんでした。このリソースを使用しました: http://www.skymind.com/~ocrow/python_string/

4

3 に答える 3

3

. . 文字列形式または単純な連結でそれを行う必要があります。

. . 多くのオプションがあり、バージョンによって異なります。%Python2 では演算子構文を使用するのが一般的ですが、Python3 では主.formatに文字列オブジェクトに対してメソッドを使用します。

. . +次のような演算子を使用して、最も単純な連結形式を引き続き使用できます。

full_req = 'GET ' + path + ' HTTP/1.1\r\n' \
           'HOST: ' + host + '\r\n' + \
           'Connection: close'

. . ファイルを要求しないことに注意してください(例のように、ファイル自体ではなく親フォルダーを要求しています)。HTTPプロトコルを試すだけでなく、ファイルをダウンロードする予定の場合は、実行する組み込みモジュールがありますそれ(チェックしてくださいurllib.retrieve)。

. . (ソケットで)接続を開くときにポート番号(通常はHTTPの場合は80)が使用されますが、あなたの例ではリクエストのその部分も実行していないようです。

. Amplexos。

于 2013-04-21T21:50:43.440 に答える