2016-09-15 6 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/ja/master)を使用するとよいでしょう。 /)を使用します。 – albert

+0

あなたは*間違いなく*要求を代わりに使用します。 –

+0

urllib2を使用してこの問題を解決してください。 は、ユーザに のURLを入力するように指示し、ウェブページを読むことができます。 split( '/')を使用すると、URLを のコンポーネント部分に分割して、ソケット接続呼び出しのホスト名を抽出できます。 tryとexceptを使用してエラーチェックを追加し、ユーザー が不適切な形式のURLまたは存在しないURLを入力した状態を処理します。 –

答えて

0

GETを正しく呼び出さないように見えます。あなたは

mysock.sendを書くときあなたは、コマンドに変数 "URL" ではなく、単に語句「URLの文字列を埋め込んされていません

( 'URLの\ n個の\ nをGET') "

私は分かりませんが、それはチェックする価値があります。

私自身のコードは次のようになります。

CMD = 'GET '+アドレス+' HTTP/1.0 \ rを\ nを\ r \ nの'
CMD = cmd.encode()
mysock。 (CMD)「アドレス」は、ユーザが入力したアドレスの名前です

を送ります。

関連する問題