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/ko/master)를 사용하는 것이 좋습니다. /) 대신. – albert

+0

* 확실하게 * 대신'requests'를 사용하고 싶습니다. –

+0

urllib2를 사용하여이 문제를 해결하도록 도와주십시오. 은 웹 페이지를 읽을 수 있도록 URL을 입력하라는 메시지를 표시합니다. split ('/')을 사용하여 URL을 구성 요소 파트로 분리 할 수 ​​있으므로 소켓 연결 호출의 호스트 이름을 추출 할 수 있습니다. try 및 except를 사용하여 오류 확인을 추가하여 사용자 이 부적절하게 형식화되거나 존재하지 않는 URL을 입력 한 상태를 처리합니다. –

답변

0

GET을 올바르게 호출하지 않는 것처럼 보입니다. 당신이

mysock.send을 쓸 때 당신은 명령에 변수 "URL"단순히 문구 "URL 문자열을 삽입하지 않는

('URL \ 없음 \ 없음을 GET') ".

잘 모르겠지만 확인해 볼 가치가 있습니다.

내 자신의 코드는 다음과 같습니다

cmd를 = 'GET'+ 주소 + 'HTTP/1.0 \ 연구 \ n을 \ r에 \ n을'
cmd를 = cmd.encode()
mysock. send (cmd)

"address"는 사용자가 입력 한 주소의 이름입니다.

관련 문제