Struktura wiadomości żądania protokołu SOAP
This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
Jeśli chcesz, aby zbudować własną żądań protokołu SOAP zamiast klasy serwera proxy, dostarczonych przez klient protokołu SOAP Visual Studio 2005, należy użyć następujących formatów wiadomości.
Format wiadomości żądania protokołu SOAP, procedur przechowywanych i typy definiowane przez użytkownika
Następujący przykład przedstawia typową żądanie protokołu SOAP wysyłane do wystąpienie SQL Server. W wiadomości SOAP GetCustomerInfo wymagane jest działanie. 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 nazwą metoda poprzedzone jego obszar nazw. Ta wartość jest tej samej metoda i obszar nazw dodanego do punktu końcowego, utworzone przy użyciu UTWÓRZ PUNKT KOŃCOWY.Należy zauważyć, że to pole jest opcjonalne.The Host HTTP header pole identifies the server to which the HTTP request is sent.
<elementu SOAP: kopert> Element
Szczegółowe informacje o żądaniu protokołu SOAP są uwzględniane w <Body> element w kopercie protokołu SOAP. Poprzedni przykład żądania GetCustomerInfo Metoda. The xmlns atrybut in <GetCustomerInfo> is the same namespace that is specified for this metoda you created the endpoint by using CREATE ENDPOINT. Aby uzyskać więcej informacji na temat procedura przechowywana i obszarze nazw Zobacz Przykładowe aplikacje wysyłania żądań usług sieci Web XML macierzysty. Następujące parametry metod są przekazywane w jako elementy podrzędność <GetCustomerInfo> element:
The <CustomerID> element that has value 1 is the input parameter
The <OutputParam> element is the output parameter.
Parametr wejściowy, obsługa
Parametry wejściowe są obsługiwane w następujący sposób:
Jeśli metoda SOAP wymaga parametr wejściowy, ten parametr nie jest zawarte w żądaniu protokołu SOAP, wartość nie jest przekazywany do procedura przechowywana o nazwie.Występuje domyślna akcja określone w procedurze przechowywanej.
Jeśli metoda SOAP wymaga parametrem wejściowym, ten parametr jest zawarte w żądaniu, ale żadna wartość nie jest przypisany do niego, parametr jest przekazywany do procedura przechowywana o pusty ciąg znaków jako jego wartość.Należy zauważyć, że nie jest NULL.
Jeśli parametr wejściowy wymaga działania protokołu SOAP i chcesz wysłać wartości NULL dla tego parametru, należy ustawić xsi:nil atrybut do "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 parametrów typów takich jak integer i float (typy wartości) Visual Studio 2005 nie będzie generował xsi: nil = "true" atrybut ; zamiast tego, dostarcza wartości domyślne dla tych parametrów; na przykład 0 dla Liczba całkowita od 0.0 do typówzmiennoprzecinkowe typów, itd.Dlatego, jeśli użytkownik chce przekazać wartości NULL do tych typów parametrów, należy utworzyć komunikatu SOAP w aplikacji za pomocą xsi: nil = "true" atrybut. Aby uzyskać więcej informacji, zobacz Zasady i ograniczenia w trybie macierzystym XML sieci Web Services
Można podać kilka aspekty o parametrach.tabela zaprezentowano w dalszej części tego tematu przedstawiono kilka aspekty, które można określić, gdy użytkownik zażąda ad hoc kwerendy SQL.W tej tabela wszystkie aspekty, które mogą być określone dla <Wartość> Węzeł może być określony w węzłach parametr metoda RPC.
Format wiadomości żądania protokołu SOAP, jeśli żądanie kwerendy SQL ad hoc
Wysyłając żądanie 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 (nazwy metodasqlbatch) czy klient używa do określenia kwerendy SQL. Należy zauważyć, że ten nagłówek jest opcjonalne.
<elementu SOAP: kopert> Element
Szczegóły żądania protokołu SOAP są wyświetlane w <Body> element. Protokołu SOAP <Body> element ma tylko jeden element podrzędność elementu)<sqlbatch>), i identyfikuje Żądana metoda. Gdzie jest przestrzeni nazw, identyfikowaną w elemencie sqlbatch Operacja jest zdefiniowany. Ten element ma po elementów podrzędność:
The <BatchCommands> element specifies the query, or queries separated by semicolons (;), to wykonać.
The <Parameters> element provides an optional list of parameters.W kopercie żądanie poprzedniego przykładu istnieje tylko jeden parametr przekazany do kwerendy.Każdy parametr dodawane do komunikatu SOAP jako <SqlParameter> element podrzędność<Parameters> element. W przekazywania parametrów, użytkownik musi upłynąć co najmniej (nazwa parametruName atrybut <SqlParameter> element) oraz parametr wartość ()<Value> element podrzędność <SqlParameter> element).
Aby uniknąć nieoczekiwanych konwersje, dostarczają informacji jak najwięcej parametrów można.W poniższej tabela przedstawiono aspekty dodatkowych parametrów, które mogą być określone dla <SqlParameter> element. Można również określić niektóre z tych aspekty dla <Value> element.
Aby aspekty, które mogą być określone w obu <SqlParameter> oraz <Value> element, określając <Value> element, aspekty musi być w https://schemas.microsoft.com/sqlserver/2004/sqltypes obszar nazw, jak pokazano w poniższym przykładzie:
<Value xsi:type="xsd:string" sqltypes:maxLength="100" xmlns:sqltypes="https://schemas.microsoft.com/sqlserver/2004/sqltypes">1</Value>
zestaw reguł parametru |
Komentarz |
Można określić w węźle |
---|---|---|
Kierunek |
Określa (kierunek parametruDane wejściowe, InputOutput).Dane wejściowe jest ustawieniem domyślnym. |
<SqlParameter> |
LCID |
Określa regionalny systemu windows dla sortowanie typy znaków.Odpowiednik LCID wartości zwracane przez COLLATIONPROPERTY wewnętrznych. |
<SqlParameter> <Value> |
maxLength |
Atrybut <SqlParameter> element zapewnia maksymalną długość wartości parametru. Wartością domyślną jest 1. |
<SqlParameter> <Wartość> |
Nazwa |
Atrybut <SqlParameter> element zawiera nazwę parametru. |
<SqlParameter> |
outputRequested |
Można stosować do elementów parametru, aby wskazać, czy należy wysyłać dane wyjściowe.Domyślne zachowanie zależy od parameterMode używane, czy jest jawny lub domyślne. Jeżeli atrybut jest ustawiony na "true" na parametr wejściowy spowoduje wystąpienie błędu. |
<Value> |
precyzja |
Ten atrybut <SqlParameter> element zapewnia dokładność wartości parametru. Wartością domyślną jest 18. |
<SqlParameter> <Wartość> |
skala |
Ten atrybut <SqlParameter> element zawiera skali wartości parametru. Wartością domyślną jest 0. |
<SqlParameter> <Wartość> |
sqlCompareOptions |
Określa opcje porównania do sortowanie typy znaków.Jest on wyliczenia wartości, które mogą być połączone zgodny z ComparisonStyle wartość zwracana przez COLLATIONPROPERTY wewnętrznych. |
<SqlParameter><Wartość> |
sqlDbType |
Określa typ parametru. |
<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.Albo można pominąć parametr elementu z listy lub też atrybut typu logiczny useDefaultValue identyfikatorze"" true" może być określony.Domyślną wartością tego atrybut jest "false" , jeśli dany element jest włączone i "true" Jeśli element zostanie pominięty. |
<SqlParameter> <Wartość> |
XmlNamespace |
Określa obszar nazw schematu XML skojarzony z xml Parametr typu. |
<SqlParameter> <Wartość> |
Typ xsi: type |
Określa typ wartości.Aby uzyskać więcej informacji na temat sposobu Typ xsi: type mapuje zestaw reguł SQL Server System typów danych, zobacz Mapowania typu danych w trybie macierzystym XML sieci Web Services. |
<Wartość> |
nazwa_typu |
Used to specify user-defined type arguments.typename can contain the three-part name. |
<SqlParameter> <Wartość> |