본문 바로가기
Computer Network

[데이터통신] HTTP request POST 실습 - 411 Length Required

by 수현리 2024. 10. 13.

문제: response의 411 status code

여기서 LENGTH REQUIRED는 Content-Length 미입력을 말하는데
Content-Length 값이 잘못 입력된 줄 알아서 계속 고쳐봤는데 해결이 안됐다.
파이썬 triple quote가 interpret되는 과정에서 new line에 해당하는 개행 문자를 추가해서 문제가 생겼었었다.
print(message.encode())로 확인해보니 \n 이 추가돼 있었다.

 
 

해결: 단일 따옴표 string으로 바꿔줌.

response 메세지가 정상적으로 왔다.

 
 
 

411 error 코드

from socket import *
serverName = '0.00.00.000' //임의로 넣은 IP 주소
serverPort  = 00000 //임의로 넣은 port #
clientSocket = socket(AF_INET, SOCK_STREAM) 
clientSocket.connect((serverName, serverPort))
message = '''POST /getcode HTTP/0.1 //에러 원인 줄
Host: 0.00.00.000\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 26\r\n\r\n 
name=이름&sid=A000000''' // 임의
clientSocket.send(message.encode())
response = clientSocket.recv(1024)
print("response:", response.decode())
response = clientSocket.recv(1024)
print("response:", response.decode())
clientSocket.close()    

 

 

 

정상 코드

from socket import *
serverName = '0.00.00.000'
serverPort  = 00000
clientSocket = socket(AF_INET, SOCK_STREAM) 
clientSocket.connect((serverName, serverPort))
message = 'POST /getcode HTTP/0.1\r\nHost: 0.00.00.000\r\nContent-Type: application/x-www-form-urlencoded\r\nContent-Length: 26\r\n\r\nname=이름&sid=A000000'
clientSocket.send(message.encode())
response = clientSocket.recv(1024)
print("response:", response.decode())
response = clientSocket.recv(1024)
print("response:", response.decode())
clientSocket.close()    

수업: 데이터 통신 data communication
실습: 소켓 프로그래밍 socket programming