Share via


SOAP 요청 메시지 구조

SOAP 클라이언트가 Visual Studio 2005 에서 제공하는 프록시 클래스를 사용하는 대신 자체 SOAP 요청을 작성하도록 하려면 다음 메시지 형식을 사용해야 합니다.

저장 프로시저 및 사용자 정의 유형의 SOAP 요청 메시지 형식

다음 예제에서는 SQL Server 2005 인스턴스로 보내는 일반적인 SOAP 요청을 보여 줍니다. SOAP 메시지에서 GetCustomerInfo 작업을 요청합니다. 다음 예에서는 HTTP 헤더의 일부분만 보여 줍니다.

POST /url HTTP/1.1
Host: HostServerName
Content-type: text/xml; charset=utf-8
Content-length: 350
SoapAction: http://tempUri.org/GetCustomerInfo
...

<?xml version="1.0" encoding="utf-8" ?> 
<soap:Envelope 
    xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
   <GetCustomerInfo xmlns="http://tempUri.org/">
<CustomerID>1</CustomerID> 
<OutputParam /> 
  </GetCustomerInfo>
</soap:Body>
</soap:Envelope>

HTTP 헤더

이전 코드에서 SoapAction HTTP 헤더 필드의 값은 네임스페이스 다음에 나오는 메서드 이름입니다. 이 값은 CREATE ENDPOINT를 사용하여 만든 끝점에 추가한 네임스페이스 및 메서드와 동일합니다. 이 필드는 선택 사항입니다. Host HTTP 헤더 필드는 HTTP 요청을 보낼 서버를 식별합니다.

<soap:Envelope> 요소

SOAP 요청의 세부 사항은 SOAP Envelope의 <Body> 요소에 포함됩니다. 위의 예에서는 GetCustomerInfo 메서드를 요청합니다. <GetCustomerInfo>xmlns 특성은 CREATE ENDPOINT를 사용하여 끝점을 만든 이 메서드에 지정된 네임스페이스와 동일합니다. 저장 프로시저 및 네임스페이스에 대한 자세한 내용은 네이티브 XML 웹 서비스 요청 보내기 예제 응용 프로그램을 참조하십시오. 다음 메서드 매개 변수는 <GetCustomerInfo> 요소의 자식 요소로 전달됩니다.

  • 값이 1<CustomerID> 요소는 입력 매개 변수입니다.
  • <OutputParam> 요소는 출력 매개 변수입니다.

입력 매개 변수 처리

입력 매개 변수는 다음 방법으로 처리됩니다.

  • SOAP 메서드에서 입력 매개 변수를 요구하지만 이 매개 변수가 SOAP 요청에 없으면 호출된 저장 프로시저로 값이 전달되지 않습니다. 저장 프로시저에 정의된 기본 작업이 수행됩니다.

  • SOAP 메서드에서 입력 매개 변수를 요구하고 이 매개 변수가 요청에 있지만 값이 할당되지 않으면 이 매개 변수는 값이 빈 문자열 상태로 저장 프로시저로 전달됩니다. 이 값은 NULL이 아닙니다.

  • SOAP 작업에서 입력 매개 변수를 요구하는 경우 이 매개 변수에 대해 NULL 값을 보내려면 SOAP 요청에서 xsi:nil 특성을 "true"로 설정해야 합니다. 예를 들면 다음과 같습니다.

    <GetCustomerInfo xmlns="http://tempUri.org/" >
      <CustomerID xsi:nil="true" />
      <OutputParam />
    </GetCustomerInfo>
    

    Visual Studio 2005 에서 NULL 값을 문자열 변수로 보내면 SOAP 요청에 xsi:nil="true" 특성이 생성됩니다. 그러나 integerfloat와 같은 유형(값 유형)의 매개 변수에 대해 NULL 값을 전달하면 Visual Studio 2005 에서는 xsi:nil="true" 특성을 생성하지 않습니다. 대신 이러한 매개 변수에 기본값을 제공합니다. 예를 들어 integer 유형에 대해서는 0, float 유형에 대해서는 0.0 등의 기본값을 제공합니다. 따라서 이러한 유형의 매개 변수로 NULL 값을 전달하려면 xsi:nil="true" 특성을 사용하여 응용 프로그램에서 SOAP 메시지를 작성해야 합니다. 자세한 내용은 네이티브 XML 웹 서비스의 지침 및 제한 사항을 참조하십시오.

  • 매개 변수에 여러 개의 패싯을 제공할 수 있습니다. 이 항목의 뒷 부분에 나오는 테이블에서는 임시 SQL 쿼리를 요청할 때 지정할 수 있는 여러 개의 패싯을 보여 줍니다. 이 테이블에서 <Value> 노드에 대해 지정할 수 있는 모든 패싯을 RPC 메서드 매개 변수 노드에 지정할 수 있습니다.

임시 SQL 쿼리 요청 시 SOAP 요청 메시지 형식

임시 SQL 쿼리 실행을 위해 SOAP 요청을 보내는 경우 sqlbatch 메서드를 호출하여 쿼리를 전달해야 합니다. 이때 매개 변수가 필요할 수 있습니다.

다음 예제에서는 HTTP SOAP 요청에서 sqlbatch 메서드를 호출합니다. 다음 예에서는 HTTP 헤더의 일부분만 보여 줍니다.

POST /url HTTP/1.1
Host: HostServerName
Content-type: text/xml; charset=utf-8
Content-length: 656
SoapAction: https://schemas.microsoft.com/sqlserver/2004/SOAPsqlbatch
...

<?xml version="1.0" encoding="utf-8" ?> 
 <soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
 <soap:Body>
 <sqlbatch xmlns="https://schemas.microsoft.com/sqlserver/2004/SOAP">
<BatchCommands>
SELECT EmployeeID, FirstName, LastName 
FROM Employee 
WHERE EmployeeID=@x 
FOR XML AUTO;
</BatchCommands> 
<Parameters>
   <SqlParameter Name="x" SqlDbType="Int" MaxLength="20" 
   xmlns="https://schemas.microsoft.com/SQLServer/
    2001/12/SOAP/types/SqlParameter">
  <Value xsi:type="xsd:string">1</Value> 
   </SqlParameter>
</Parameters>
  </sqlbatch>
  </soap:Body>
  </soap:Envelope>

HTTP 헤더

HTTP 헤더에서 SoapAction HTTP 헤더 필드 값은 클라이언트가 SQL 쿼리를 지정하는 데 사용하는 메서드 이름(sqlbatch)입니다. 이 헤더는 선택 사항입니다.

<soap:Envelope> 요소

SOAP 요청의 세부 사항은 <Body> 요소에 표시됩니다. SOAP <Body> 요소에는 자식 요소(<sqlbatch>) 하나만 있고 이 요소는 요청된 메서드를 식별합니다. 이 요소에서 식별된 네임스페이스는 sqlbatch 작업이 정의되는 위치입니다. 이 요소에는 다음과 같은 자식 요소가 있습니다.

  • <BatchCommands> 요소는 실행할 쿼리 또는 세미콜론(;)으로 구분하여 여러 쿼리를 지정합니다.
  • <Parameters> 요소는 선택적인 매개 변수 목록을 제공합니다. 위의 예에서 요청 Envelope에서 쿼리로 전달되는 매개 변수는 단 하나입니다. 각 매개 변수는 SOAP 메시지에 <Parameters> 요소의 <SqlParameter> 자식 요소로 추가됩니다. 매개 변수를 전달할 때 적어도 매개 변수 이름(<SqlParameter> 요소의 Name 특성) 및 매개 변수 값(<SqlParameter> 요소의 <Value> 자식 요소)은 전달해야 합니다.

예기치 않은 변환을 방지하려면 가능한 많은 매개 변수 정보를 제공합니다. 다음 테이블에는 <SqlParameter> 요소에 지정할 수 있는 추가 매개 변수 패싯 목록이 들어 있습니다. 또한 <Value> 요소에 대해서도 이러한 패싯 중 일부를 지정할 수 있습니다.

<SqlParameter><Value> 요소 모두에 대해 지정할 수 있는 패싯은 <Value> 요소를 지정할 때 다음 예에 표시된 대로 https://schemas.microsoft.com/sqlserver/2004/sqltypes 네임스페이스에 있어야 합니다.

<Value xsi:type="xsd:string" sqltypes:maxLength="100" xmlns:sqltypes="https://schemas.microsoft.com/sqlserver/2004/sqltypes">1</Value>
매개 변수 패싯 설명 지정 가능한 노드

direction

매개 변수 방향(Input, InputOutput)을 지정합니다. Input이 기본값입니다.

<SqlParameter>

localeID

문자 유형의 데이터 정렬을 위해 Windows 로캘을 정의합니다. COLLATIONPROPERTY intrinsic에서 반환하는 LCID 값과 같습니다.

<SqlParameter>

<Value>

maxLength

<SqlParameter> 요소의 특성은 최대 길이의 매개 변수 값을 제공합니다. 기본값은 1입니다.

<SqlParameter>

<Value>

name

<SqlParameter> 요소의 특성은 매개 변수 이름을 제공합니다.

<SqlParameter>

outputRequested

매개 변수 요소에 적용되어 출력을 내보낼지 여부를 나타냅니다. 기본 동작은 사용되는 parameterMode가 명시적인지 또는 기본값인지 여부에 따라 다릅니다.

입력 매개 변수에서 특성이 "true"로 설정되어 있으면 오류가 생성됩니다.

<Value>

precision

<SqlParameter> 요소의 특성은 매개 변수 값의 전체 자릿수를 제공합니다. 기본값은 18입니다.

<SqlParameter>

<Value>

scale

<SqlParameter> 요소의 특성은 매개 변수 값의 소수 자릿수를 제공합니다. 기본값은 0입니다.

<SqlParameter>

<Value>

sqlCompareOptions

문자 유형의 데이터 정렬에 대해 사용할 비교 옵션을 정의합니다. COLLATIONPROPERTY intrinsic에서 반환하는 ComparisonStyle 값과 일치하며 결합될 수 있는 값의 열거입니다.

<SqlParameter><Value>

sqlDbType

매개 변수 유형을 지정합니다. 지정할 수 있는 SQL Server 2005 시스템 데이터 형식의 목록을 보려면 네이티브 XML 웹 서비스의 데이터 형식 매핑을 참조하십시오.

<SqlParameter>

typeName

사용자 정의 유형 인수를 지정하는 데 사용됩니다. typeName에는 3부분으로 된 이름이 들어 있어야 합니다.

<SqlParameter>

<Value>

useDefaultValue

매개 변수에 대해 기본값을 사용해야 하고 목록에서 매개 변수 요소를 생략하거나 값이 "true"인 부울 특성 useDefaultValue를 지정할 수도 있음을 나타냅니다. 이 특성의 기본값은 요소가 포함되어 있는 경우 "false"이고 요소가 생략된 경우에는 "true"입니다.

<SqlParameter>

<Value>

XmlNamespace

xml 유형 매개 변수와 관련된 XML 스키마 네임스페이스를 지정합니다.

<SqlParameter>

<Value>

xsi:type

값 유형을 지정합니다. xsi:type 패싯이 SQL Server 2005 시스템 데이터 형식에 매핑되는 방법은 네이티브 XML 웹 서비스의 데이터 형식 매핑을 참조하십시오.

<Value>

참고 항목

참조

SOAP 요청 및 응답 메시지 구조
SOAP 확장 헤더
SOAP 응답 메시지 구조
SOAP 오류 메시지 구조
SOAP 요청 및 응답에 사용되는 네임스페이스

도움말 및 정보

SQL Server 2005 지원 받기