2012-12-03 5 views
0

나는 오랫동안이 문제를 해결하려고 노력 해왔다. 나는 200,401 개와 같은 응답을 얻으려고 노력하고있다. 아래 코드를 빨리 살펴볼 수 있다면 좋을 것이다. . 나는 두 가지 다른 방법으로 시도했지만 아무도 블록 안쪽에 표시된대로 작동하지 않습니다. 누군가가 나를 도울 수 있다면 정말 고마워 할 것입니다.TypeError : 지원되지 않는 피연산자 유형 - 파이썬 소켓

"head="https://stackoverflow.com/questions/ask" 
host = "stackoverflow.com" 
port = 80 
try: 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
except socket.error, msg: 
sys.stderr.write("[ERROR] %s\n" % msg[1]) 
sys.exit(1) 
try: 
sock.connect((host, port)) 
except socket.error, msg: 
sys.stderr.write("[ERROR] %s\n" % msg[1]) 
sys.exit(2) 


sock.send("HEAD %s HTTP/1.0\r\n\r\n")%(head) 
#this one gives me error" sock.send("HEAD head1 HTTP/1.0\r\n\r\n")%(head) 
TypeError: unsupported operand type(s) for %: 'int' and 'str'", my Url is string! 

sock.send("HEAD head HTTP/1.0\r\n\r\n") 
#gives error 404 

s=sock.recv(12) 
print s 
sock.close() 
sys.exit" 

답변

0
sock.send("HEAD %s HTTP/1.0\r\n\r\n")%(head) 

의미를

sock.send("HEAD %s HTTP/1.0\r\n\r\n" % head) 

합니까해야 하는가? 그것은 작동 순서입니다 - 지금은 먼저 문자열을 형식화하는데 %을 사용하려고하는 정수를 반환합니다.하지만 연산자가 정수를 제공하면 숫자 뒤에 다른 숫자가 필요합니다.

+0

도와 주셔서 감사합니다. 정말로 감사드립니다. 효과가 있었고 말이 맞았습니다! 더 이상 오류가 발생하지 않지만 올바른 URL 일지라도 여전히 400을 반환합니다. 그런 다음 내 URL을 붙여 넣으면 잘 작동합니다.하지만 내 프로그램의 경우 변수 헤드를 통해 링크를 보낼 수 있어야합니다. 제안 사항이 있습니까? –

+0

신경 쓰지 마라. 완벽하게 일했다. 많이 감사합니다! –

관련 문제