오류 417 : LabVIEW에서 HTTP 메소드를 사용할 때 발생

업데이트 됨 Apr 27, 2021

해당 제품

소프트웨어

  • LabVIEW

문의사항

HTTP 메소드를 사용하여 서버와 통신하려고하는데 HTTP VI가 Error 417: Expectation Failed 반환합니다. 이 오류의 원인은 무엇이며 어떻게 해결할 수 있습니까?

해결책

HTTP / 1.1 프로토콜 은 100 (계속) 상태를 정의하여 클라이언트가 메시지 본문을 보내기 전에 서버가 요청을 수락할지 여부를 확인할 수 있도록합니다. 프로세스는 다음과 같습니다.
  1. 클라이언트가 서버에 요청 메시지를 보내려고합니다.
  2. 클라이언트는 Expect: 100-continue 포함하는 요청 헤더를 보냅니다.
  3. 서버는 100 (Continue) 또는 417 (Expectation Failed) 상태를 다시 보냅니다.
  • 100 (Continue) 은 서버가 요청을 수락하고 클라이언트가 요청 본문 전송을 계속할 수 있음을 의미합니다.
  • 417 (Expectation Failed) 은 서버가 요청을 거부했음을 의미합니다.

HTTP 클라이언트 팔레트 에서 특정 HTTP 메소드를 사용할 때, LabVIEW는 메시지가 1024 자 이상일 때 요청 헤더에 100 - continue 를 자동으로 추가합니다. 서버가 항상 417 (Expectation Failed) 로 응답하거나 예상에 올바르게 응답하는 방법을 모르는 경우 문제가 발생할 수 있습니다.

HTTP 클라이언트 기능은 100 - continue 을 비활성화 할 수있는 옵션을 제공하지 않기 때문에, 해결책은 이를 제외하는 HTTP 요청 헤더를 처음부터 만드는 것입니다. HTTP 메소드에 대한 표준은 W3C HTTP 프로토콜 설명에 정의되어 있습니다.

아래 LabVIEW 스니펫은 TCP Palette의 기본 기능과 기능을 사용하여 HTTP POST 메서드를 구현하는 예를 보여줍니다. HTTP 요청에 대한 문자열을 작성할 때 문자열 표시 스타일을 백 슬래시 (\) 코드로 설정하십시오 . 이를 통해 명령을 올바르게 종료하는 데 필요한 표시 할 수없는 문자를 교정 할 수 있습니다.

문자열 상수 또는 문자열 컨트롤에서 :
  • 오른쪽 클릭» '\'코드 표시 또는
  • 오른쪽 클릭»속성»표시 스타일 : 백 슬래시 (\) 코드

참고 :이 이미지는 프로젝트에서 재사용 할 수있는 LabVIEW 코드가 포함 된 LabVIEW 스니펫입니다. 스니펫을 사용하려면 이미지를 마우스 오른쪽 버튼으로 클릭하고 컴퓨터에 저장 한 다음 파일을 LabVIEW 다이어그램으로 드래그하십시오.

참고 :이 이미지는 프로젝트에서 재사용 할 수있는 LabVIEW 코드가 포함 된 LabVIEW 스니펫입니다. 스니펫을 사용하려면 이미지를 마우스 오른쪽 버튼으로 클릭하고 컴퓨터에 저장 한 다음 파일을 LabVIEW 다이어그램으로 드래그하십시오.