HTTP 플로우에 대한 작업

이 주제는 HTTP 메시지 플로우를 사용하여 웹 서비스와 상호작용할 경우에 유용한 정보를 제공합니다. 후속 웹 서비스 시나리오 절과 함께 읽으면 유용합니다.

HTTPS
HTTPS 사용에 대한 도움말은 SSL 인증 구현을 참조하십시오.
응답에 대한 HTTP 상태 코드 설정
디폴트 HTTP 상태 코드는 성공을 나타내는 200입니다. 다른 상태 코드가 리턴되도록 하려면 다음 중 하나로 설정하십시오.
  • Destination.HTTP.ReplyStatusCode 필드의 상태 코드를 LocalEnvironment(상관 이름 OutputLocalEnvironment)로 설정하십시오. 이렇게 하면 아래 설명된 것처럼 HTTPResponseHeader에 설정된 모든 상태 코드가 대체됩니다.
  • 플로우에서 HTTPRequest 노드가 HTTPReply 노드 보다 먼저 오는 경우 HTTPResponseHeader는 논리 트리에 작성되어 다른 웹 서비스 응답의 HTTP 헤더를 표시합니다. 사용하기 편하도록 HTTPReply 노드 등록 정보 응답에서 디폴트 HTTP 헤더 생성을 선택하면 해당 헤더 값이 응답 메시지 작성에서 디폴드로 사용되어 상태 코드를 HTTPResponseHeader의 X-Original-HTTP-Status-Code 필드에 설정합니다. 이 필드를 HTTPReplyHeader에 설정할 수도 있지만 위에 설명된 내용 대신 LocalEnvironment를 사용하는 것이 좋습니다.
LocalEnvironment.Destination.HTTP.RequestIdentifier 사용
HTTPInput 노드가 입력 요청 메시지를 수신할 경우 요청을 송신한 웹 서비스 클라이언트를 식별하는 고유 값으로 Destination.HTTP.RequestIdentifier 로컬 환경 필드를 설정합니다. 이 값을 참조하여 해당되는 경우 다른 위치로 저장할 수 있습니다.

예를 들면, 기존 WebSphere MQ 응용프로그램과 상호작용하는 한 쌍의 메시지 플로우를 설계할 경우(브로커가 기존 웹 서비스를 호출함 참조) 이 값을 요청 플로우에 저장하고 올바른 클라이언트가 응답을 수신할 수 있도록 reply 플로우에서 복원할 수 있습니다. 이 경우 데이터를 변경해선 안되며 BLOB로써 데이터를 보유해야 합니다.

HTTPReply 노드는 로컬 환경에서 이 값을 추출하여 특정 클라이언트로 송신하도록 응답을 설정합니다.

HTTPInput 및 HTTPReply 노드 모두를 포함하는 메시지 플로우를 설계할 경우 값이 HTTPInput 노드에 의해 로컬 환경으로 설정되지만 HTTPReply 노드는 이 값을 사용하지 않습니다. 따라서 해당 메시지 플로우에 동일한 플로우의 노드와 Compute 노드 모두가 포함될 경우 Compute 노드에 의해 입력 메시지에서 출력 메시지로 복사되는 메시지 트리의 구성요소를 지정할 때 로컬 환경 트리를 포함시킬 필요가 없습니다(Compute 모드 등록 정보).

동적으로 HTTPRequest 노드 URL 설정
HTTPRequest 노드에서 디폴트 웹 서비스 URL 등록 정보를 설정하여 웹 서비스 요청의 목적지 URL을 판별할 수 있습니다. 메시지 플로우 내에서 HTTPRequest 노드에 앞서 Compute 노드를 구성하여 등록 정보에 설정된 값을 대체할 수 있습니다. LocalEnvironment.Destination.HTTP.RequestURL에 URL 문자열을 저장하는 ESQL을 코딩하십시오. 이것은 HTTPRequest 노드에서 검색되며 노드 등록 정보 값 대신 사용됩니다.

Compute 노드에서 요청 메시지의 HTTPRequestHeader 섹션에 있는 특수 헤더 X-Original-HTTP-URL에 요청 URL을 설정할 수도 있지만(기타 모든 설정을 대체함) 이 경우에는 로컬 환경 컨텐츠를 사용하는 것이 좋습니다.

HTTPReply 노드에서 응답으로부터 디폴트 HTTP 헤더 생성 설정
HTTPReply 노드 등록 정보 대화 상자에서 응답으로부터 디폴트 HTTP 헤더 생성 선택란을 선택할 경우 이 노드에는 웹 서비스 클라이언트로 송신된 응답에 최소 헤더 세트가 포함됩니다.
임의의 헤더를 명시적으로 설정하려면 HTTPReplyHeader에서 헤더를 작성하십시오. 예를 들면, XMLNS 도메인에서 메시지를 전달하고 Content-Type을 수정하려는 Compute 노드는 다음과 같이 해당 헤더를 작성할 수 있습니다.
CALL CopyMessageHeaders();
SET OutputRoot.HTTPReplyHeader."Content-Type" = 'text/xml';
SET OutputRoot.XMLNS = InputRoot.XMLNS;

특정 Content-Type의 경우, MIME 도메인에서 작업 중이 아니면 ContentType 등록 정보를 사용하여 이 헤더를 설정하지 마십시오. ContentType 등록 정보는 특히 MIME에서 사용하는 Content-Type의 값을 설정하는 데 사용합니다.

요청에 사용하는 전체 HTTP 헤더 세트는 다음 알고리즘으로 헤더를 선택하여 빌드합니다.
  1. HTTPReplyHeader에서 임의의 헤더를 선택하십시오.
  2. Content-Type 헤더가 정의되지 않은 경우 ContentType 등록 정보의 비어있지 않은 임의의 값을 사용하여 작성하십시오.
  3. HTTPResponseHeader에서 임의의 헤더를 선택하십시오(HTTPResponsHeader는 HTTPRequest 노드로부터의 리턴에서 전달됨).
  4. Content-Type 헤더가 정의되지 않은 경우 디폴트 값 text/xml; charset=utf-8을 작성하십시오.
  5. Content-Length 헤더를 작성하거나 덮어쓰십시오.
주의: 응답으로부터 디폴트 HTTP 헤더 생성 선택란을 지웠더라도 HTTPReply 노드가 항상 Content-Length 헤더를 다시 씁니다. 컨텐츠가 올바른지 확인하기 위해서입니다.

HTTPReplyHeader 섹션이 HTTPReply 노드가 수신한 메시지에 존재하고 HTTPReply 노드의 출력 터미널이 연결된 경우 HTTPReplyHeader 섹션이 변경 또는 추가된 값으로 갱신됩니다.

HTTPRequest 노드에 대한 입력으로부터 디폴트 HTTP 헤더 생성 설정
HTTPRequest 노드 등록 정보 대화 상자에서 입력으로부터 디폴트 HTTP 헤더 생성 선택란을 선택할 경우 노드에는 서버로 송신된 요청에 최소 세트의 헤더가 포함됩니다.
임의의 헤더를 명시적으로 설정하려면 HTTPRequestHeader에서 헤더를 작성하십시오. 예를 들면, XMLNS 도메인에서 메시지를 전달하고 Content-Type을 수정하려는 Compute 노드는 다음과 같이 해당 헤더를 작성할 수 있습니다.
CALL CopyMessageHeaders();
SET OutputRoot.HTTPRequestHeader."Content-Type" = 'text/xml';
SET OutputRoot.XMLNS = InputRoot.XMLNS;
특정 Content-Type의 경우, MIME 도메인에서 작업 중이 아니면 ContentType 등록 정보를 사용하여 이 헤더를 설정하지 마십시오. ContentType 등록 정보는 특히 MIME에서 사용하는 Content-Type의 값을 설정하는 데 사용합니다.
요청에 사용하는 전체 HTTP 헤더 세트는 다음 알고리즘으로 헤더를 선택하여 빌드합니다.
  1. 요청 URL 또는 들어오는 HTTPRequestHeader 섹션을 기반으로 호스트 헤더를 설정하십시오.
  2. HTTPRequestHeader에서 임의의 헤더를 선택하십시오.
  3. Content-Type 헤더가 정의되지 않은 경우 ContentType 등록 정보의 비어있지 않은 임의의 값을 사용하여 작성하십시오.
  4. HTTPInputHeader에서 임의의 헤더를 선택하십시오(HTTPInputHeader는 HTTPInput 노드가 자동으로 작성함).
  5. Content-Type 헤더가 정의되지 않은 경우 디폴트 값 text/xml; charset=utf-8을 작성하십시오.
  6. SOAPAction 헤더가 정의되지 않은 경우 디폴트 값 ''로 작성합니다.
  7. Content-Length 헤더를 작성하거나 덮어쓰십시오.
주의: 입력 또는 요청으로부터 디폴트 HTTP 헤더 생성 선택란을 지웠더라도 HTTPRequest 노드가 항상 Content-Length 헤더를 다시 씁니다. 컨텐츠가 올바른지 확인하기 위해서입니다.

HTTPRequestHeader가 수신된 메시지에 존재하는 경우 HTTPRequestHeader가 변경 또는 추가된 값으로 갱신됩니다.

변경 시작HTTP에 문제가 있는 경우 HTTPListener 추적 수집변경 끝
변경 시작HTTP에 문제가 있는 경우 HTTPListener를 추적할 수 있습니다.
  1. mqsichangetrace 명령을 사용하여 추적을 시작하십시오.
  2. -b 매개변수에 HTTPListener 규정자를 지정하고 mqsireadlog 명령을 사용하여 HTTPListener 추적 로그를 보십시오.
변경 끝
관련 개념
WebSphere MQ Web Services Transport
WSDL 생성
관련 태스크
메시지 플로우 작성
전개
전개 결과 점검
관련 참조
HTTPInput 노드
HTTPReply 노드
HTTPRequest 노드
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac20450_