Udostępnij za pośrednictwem


Struktura komunikatu żądania protokołu SOAP

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

Jeśli chcesz zbudować własny żądań protokołu SOAP zamiast korzystania z klasy proxy dostarczonych przez klient protokołu SOAP Visual Studio 2005, należy użyć formatu wiadomości.

Format komunikatu żądania protokołu SOAP, procedury przechowywane i typów zdefiniowanych przez użytkownika

Poniżej pokazano typowy żądanie protokołu SOAP wysłane do wystąpienie SQL Server.W wiadomości SOAP GetCustomerInfo Żądana jest operacja.Należy zauważyć, że jest wyświetlana tylko fragment nagłówka 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>

Nagłówek HTTP

W poprzednim kodzie wartość SoapAction pole nagłówka HTTP jest nazwa metoda poprzedzone obszaru nazw.Ta wartość jest tej samej metoda i obszar nazw dodanego do punktu końcowego, utworzone za pomocą Tworzenie punktu KOŃCOWEGO.Należy zauważyć, że to pole jest opcjonalne.Host pole nagłówka HTTP identyfikuje serwer, do którego wysyłane jest żądanie HTTP.

<Koperty SOAP:> Element

Szczegóły żądanie protokołu SOAP są uwzględnione w <Body> elementu w kopercie protokołu SOAP.Poprzedni przykład żądania GetCustomerInfo metoda.xmlns Atrybut w <GetCustomerInfo> jest ten sam obszar nazw określonego dla tej metoda tworzenia punktu końcowego przy użyciu tworzenie punktu KOŃCOWEGO.Aby uzyskać informacje dotyczące procedura składowana i obszaru nazw, zobacz Przykładowe aplikacje do wysyłania żądań usług sieci Web XML macierzystego.Następujące parametry metoda są przekazywane w jako elementy podrzędność <GetCustomerInfo> element:

  • <CustomerID> Element, dla którego wartość 1 jest parametr wejściowy

  • <OutputParam> Element jest parametr wyjściowy.

Obsługa parametru wejściowego

Parametry wejściowe są obsługiwane w następujący sposób:

  • Jeśli metoda SOAP wymaga parametru wejściowego, ten parametr nie jest zawarte w żądaniu protokołu SOAP, wartość nie jest przekazywana do wywołana procedura składowana.Akcja domyślna zdefiniowana w procedura składowana występuje.

  • Jeśli metoda SOAP wymaga parametru wejściowego, ten parametr jest zawarte w żądaniu, ale wartość nie jest przypisany do niego, parametr jest przekazywany do procedura składowana z pustego ciąg jako jego wartość.Należy zauważyć, że nie jest NULL.

  • Jeśli operacja SOAP wymaga parametru wejściowego i jeśli chcesz wysłać wartość NULL dla tego parametru musi zestaw xsi:nil atrybut "true" w żądaniu protokołu SOAP.Na przykład:

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

    W Visual Studio 2005, jeśli wartości NULL do zmiennych typu ciąg generuje xsi: nil = "true" atrybut w żądaniu protokołu SOAP.Jednak podczas przekazywania wartości NULL dla typów parametrów takich jak integer i float (wartość typy), Visual Studio 2005 nie generuje xsi: nil = "true" atrybut; Zamiast tego dostarcza wartości domyślne dla tych parametrów; na przykład, 0 dla całkowitą typy 0,0 dla pływaka typów itd.Dlatego, jeśli chcesz przekazać te typy parametrów wartości NULL, należy utworzyć komunikatu SOAP w aplikacji za pomocą xsi: nil = "true" atrybut.Aby uzyskać więcej informacji, zobacz Wytyczne i ograniczenia dotyczące usług sieci Web XML macierzystego

  • Można podać kilka faset o parametrach.tabela zaprezentowano w dalszej części tego tematu przedstawiono kilka faset, które można określić podczas żądania ad hoc kwerend SQL.W tej tabela wszystkie aspekty, które można określić dla <wartość> węzła można określić na węzłach parametr metoda RPC.

Format komunikatu żądania protokołu SOAP podczas żądania kwerend Ad Hoc SQL

Podczas wysyłania żądania protokołu SOAP ad hoc wykonania kwerendy SQL należy wywołać sqlbatch metoda i przekazywać kwerendy i wszelkie parametry mogą być wymagane.

Następujące przykładowe wywołania żądania HTTP SOAP sqlbatch metoda.Należy zauważyć, że jest wyświetlana tylko fragment nagłówka 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>

Nagłówek HTTP

W nagłówku HTTP zauważyć, że SoapAction wartość pole nagłówka HTTP jest nazwą metoda (sqlbatch) czy klient używa do określenia kwerendy SQL.Należy zauważyć, że nagłówek ten jest opcjonalny.

<Koperty SOAP:> Element

Szczegóły żądania protokołu SOAP są wyświetlane w <Body> elementu.SOAP <Body> element ma tylko jeden element podrzędność (<sqlbatch>), i identyfikuje metoda żądana.Gdzie jest przestrzeni nazw, identyfikowaną w elemencie sqlbatch operacji jest zdefiniowany.Ten element wprowadzono następujące elementy podrzędność:

  • <BatchCommands> Element określa kwerendy lub kwerend oddzielone średnikami (;), do wykonać.

  • <Parameters> Element zapewnia opcjonalna lista parametrów.W poprzednich Koperta żądanie przykład jest tylko jeden parametr przekazany do kwerendy.Każdy parametr dodawane do komunikatu SOAP jako <SqlParameter> element podrzędność<Parameters> elementu.W przekazywania parametrów, musi upłynąć co najmniej nazwę parametru (Name atrybut <SqlParameter> element) i wartość parametru (<Value> element podrzędność <SqlParameter> element).

Aby uniknąć nieoczekiwanego konwersje, zapewniają jak najwięcej informacji o parametrach możesz.Poniższa tabela zawiera dodatkowy parametr faset, które można określić dla <SqlParameter> elementu.Można również określić niektóre aspekty te dla <Value> elementu.

Dla faset, które mogą być określone w obu <SqlParameter> i <Value> element, określając <Value> element, aspekty musi być w https://schemas.microsoft.com/sqlserver/2004/sqltypes obszaru nazw, jak pokazano w następującym przykładzie:

<Value xsi:type="xsd:string" sqltypes:maxLength="100" xmlns:sqltypes="https://schemas.microsoft.com/sqlserver/2004/sqltypes">1</Value>

Parametr aspekt

Komentarz

Można określić w węźle

Kierunek

Określa kierunek parametru (wprowadzania, wejścia/wyjścia).Wprowadzania jest wartością domyślną.

<SqlParameter>

Identyfikator ustawień regionalnych

Definiuje windows ustawienia regionalne dla sortowania typy znaków.Odpowiednik wartości LCID zwrócony przez COLLATIONPROPERTY wewnętrzne.

<SqlParameter>

<Value>

element maxLength

Atrybut z <SqlParameter> element zapewnia maksymalną długość wartości parametru.Wartość domyślna to 1.

<SqlParameter>

<Wartość>

name

Atrybut z <SqlParameter> element zawiera nazwę parametru.

<SqlParameter>

outputRequested

Można stosować do elementów parametru, aby wskazać, czy należy emitować wyjściowego.Domyślne zachowanie zależy od parameterMode używane, czy jest wyraźnej lub domyślnej.

Jeśli atrybut jest zestaw do "true" na parametr wejściowy, spowoduje wygenerowanie błędu.

<Value>

dokładność

Ten atrybut <SqlParameter> element zapewnia dokładność wartości parametru.Wartość domyślna to 18.

<SqlParameter>

<Wartość>

skala

Ten atrybut <SqlParameter> element zapewnia skali wartości parametru.Wartością domyślną jest 0.

<SqlParameter>

<Wartość>

sqlCompareOptions

Określa opcje porównania do sortowanie typy znaków.Jest wyliczenia wartości, które mogą być połączone odpowiadające z ComparisonStyle wartość zwracana przez COLLATIONPROPERTY wewnętrzne.

<SqlParameter><wartości>

sqlDbType

Określa typ parametru.Lista SQL Server można określić typy danych systemu Zobacz Mapowania typu danych usług sieci Web XML macierzystego.

<SqlParameter>

clrTypeName

Used to specify CLR user-defined type arguments.clrTypeName can contain the three-part name.

<SqlParameter>

<Wartość>

useDefaultValue

Wskazuje, że wartość domyślna powinny być używane dla parametru.Element parametru można pominąć albo z listy lub, alternatywnie, wartość logiczna atrybut useDefaultValue o wartości "true" może być określony.Domyślną wartością tego atrybut jest "false" , jeśli element jest włączone i "true" , jeśli element zostanie pominięty.

<SqlParameter>

<Wartość>

XmlNamespace

Określa obszar nazw schematu XML skojarzony z xml typu parametru.

<SqlParameter>

<Wartość>

xsi: type

Określa typ wartości.Aby uzyskać więcej informacji dotyczących sposobu xsi: type aspekt mapuje SQL Server typów danych, zobacz Mapowania typu danych usług sieci Web XML macierzystego.

<Wartość>

TypeName

Used to specify user-defined type arguments.typename can contain the three-part name.

<SqlParameter>

<Wartość>