2016-09-15 68 views
0

我想提示用戶輸入URL,因此它可以讀取任何網頁套接字GET請求的語法,但我不斷收到400錯誤的請求錯誤,當我運行我的程序。什麼是發送與用戶輸入

我已經建立了從我輸入主機的套接字連接。但是當我嘗試發送一個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

你*絕對*想要使用'requests'來代替。 –

+0

請你能幫我解決這個問題,使用urllib2。 提示用戶輸入 的URL,以便它可以讀取任何網頁。您可以使用split('/')將URL拆分爲 的組成部分,以便您可以提取套接字連接調用的主機名。 使用try添加錯誤檢查,除了處理用戶 輸入格式不正確或不存在的URL的情況。 –

回答

0

它看起來像我沒有正確調用GET。當你寫

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

你是不是嵌入變量 「網址」 進入命令,但簡單地用短語「URL字符串」。

我不知道,但可能是值得一試。

我自己的代碼看起來是這樣的:

CMD = 'GET '+地址+' HTTP/1.0 \ r \ n \ r \ N'
CMD = cmd.encode()
mysock。發送(cmd)

其中「地址」是用戶輸入的地址的名稱。