Exemples d'applications pour l'envoi de demandes de services Web XML natifs
Les exemples suivants ont pour but de décrire la méthode d'envoi des demandes SOAP et la méthode de traitement des réponses. Ces exemples incluent un client Visual Studio 2005, à la fois C# et Visual Basic.
- Envoi de demandes SOAP à l'aide du client Visual Studio 2005 (C#)
- Envoi de demandes SOAP à l'aide du client Visual Studio 2005 (Visual Basic)
Installation initiale
Une installation commune est nécessaire pour tous les exemples d'applications. Les étapes de l'installation sont les suivantes :
- Créez un exemple de procédure stockée.
- Créez une fonction définie par l'utilisateur.
- Créez le point de terminaison SOAP HTTP.
Remarque : |
---|
Pour créer ces objets dans l'exemple de base de données AdventureWorks, vous pouvez utiliser SQL Server Management Studio ou l'utilitaire de commande osql. Pour installer l'exemple de base de données AdventureWorks, consultez Installation des exemples de bases de données AdventureWorks et d'autres exemples via le programme d'installation. |
Création de la procédure stockée (GetCustomerInfo)
La procédure stockée suivante explique comment une application cliente gère les paramètres d'entrée et de sortie, le code de retour, les résultats des requêtes et les erreurs si une défaillance se produit.
USE AdventureWorks
GO
DROP PROCEDURE GetCustomerInfo
GO
CREATE PROCEDURE GetCustomerInfo
@CustomerID nchar(5),
@OutputParam nchar(5) OUTPUT
AS
SELECT @OutputParam = '99999'
-- The following INSERT should fail, and an-error returned
-- to the client.
INSERT Store (CustomerID) VALUES (1)
-- Execute a SELECT statement.
SELECT top 3 SalesOrderID, OrderDate
FROM Sales.SalesOrderHeader
WHERE CustomerID = @CustomerID
-- Execute SELECT returning XML.
SELECT CustomerID, SalesOrderID, OrderDate
FROM Sales.SalesOrderHeader
WHERE CustomerID = @CustomerID
for xml auto, XMLSCHEMA
PRINT 'Hello World'
RETURN 0
Go
Cette procédure stockée comporte deux paramètres : un paramètre d'entrée (CustomerID
) et un paramètre de sortie (OutParam
) pour indiquer comment les paramètres sont transmis.
La procédure stockée exécute les instructions suivantes :
- Instruction
INSERT
qui échoue intentionnellement et retourne une erreur. L'erreur est volontaire pour indiquer comment les erreurs sont retournées dans la réponse SOAP. Dans Visual Studio 2005, les erreurs sont retournées en tant qu'objets SqlMessage. - Instruction
SELECT
. Dans Visual Studio 2005, l'ensemble de lignes généré est retourné en tant qu'objet DataSet. - Requête
SELECT FOR XML
qui retourne des données XML. Dans Visual Studio 2005, l'ensemble de lignes généré est retourné en tant qu'objet SqlXml. - Instruction
PRINT
. Le résultat est retourné dans Visual Studio 2005 en tant qu'objet SqlMessage.
Création de la fonction définie par l'utilisateur (UDFREturningAScalar)
Cette fonction retourne une valeur de type entier.
USE AdventureWorks
GO
CREATE FUNCTION UDFReturningAScalar()
RETURNS int
AS
BEGIN
RETURN 555
END
Go
Création du point de terminaison SOAP HTTP (sql_endpoint)
Ce point de terminaison expose la procédure stockée et la fonction définie par l'utilisateur en tant que méthodes Web. Le point de terminaison est également configuré pour autoriser les requêtes appropriées. L'application cliente peut envoyer des demandes SOAP pour les requêtes appropriées au point de terminaison.
Pour la valeur de hostname, vous devez indiquer le nom du serveur lorsque vous réservez l'espace de noms HTTP (sp_reserve_http_namespace
) pour votre point de terminaison, et également lorsque vous indiquez le paramètre SITE
. De plus, la valeur de port doit correspondre au port HTTP utilisé par l'instance de SQL Server ; par exemple, "80" ou un autre numéro de port TCP le cas échéant.
USE AdventureWorks
GO
DROP ENDPOINT sql_endpoint
GO
EXEC sp_reserve_http_namespace N'http://hostname:port/sql'
-- EXEC sp_reserve_http_namespace N'https://www.microsoft.com:80/sql' for example
GO
CREATE ENDPOINT sql_endpoint
STATE = STARTED
AS HTTP(
PATH = '/sql',
AUTHENTICATION = (INTEGRATED ),
PORTS = ( CLEAR ),
SITE = 'server'
)
FOR SOAP (
WEBMETHOD 'http://tempUri.org/'.'GetCustomerInfo'
(name='AdventureWorks.dbo.GetCustomerInfo',
schema=STANDARD ),
WEBMETHOD 'UDFReturningAScalar'
(name='AdventureWorks.dbo.UDFReturningAScalar'),
BATCHES = ENABLED,
WSDL = DEFAULT,
DATABASE = 'AdventureWorks',
NAMESPACE = 'http://Adventure-Works/Customers'
)
GO
USE master
EXEC sp_grantlogin @loginame='domain\userOrGroup'
EXEC sp_grantdbaccess @loginame='domain\userOrGroup'
GRANT CONNECT ON ENDPOINT::sql_endpoint TO [domain\userOrGroup]
GO
Dans le code précédent, vous pouvez observer les éléments suivants :
- deux méthodes Web sont définies pour la création de ce point de terminaison ;
- la valeur de
WSDL
estDEFAULT
. Par conséquent, le client peut demander une réponse WSDL de la part du serveur ; - la valeur de
BATCHES
estENABLED
. Par conséquent, le client peut envoyer des demandes appropriées à ce point de terminaison ; - la méthode Web
UDFReturningAScalar
ne spécifie pas l'espace de noms facultatif, mais elle utilise l'espace de noms spécifié dans la valeurNAMESPACE
; - les valeurs de domain\userOrGroup, créées comme ouverture de session SQL Server, doivent être le groupe ou l'utilisateur de domaine réel qui a besoin d'un accès au point de terminaison HTTP.
Voir aussi
Référence
Ajout d'en-têtes SOAP à des applications clientes
Ajout de la prise en charge du suivi SOAP aux applications clientes
Configuration du serveur pour qu'il écoute les demandes de services Web XML natifs
Structure des messages de demande et de réponse SOAP
Instructions et restrictions d'emploi en vigueur dans les services Web XML natifs
Concepts
Gestion du type de données XML et des types CLR définis par l'utilisateur
Autres ressources
Écriture d'applications clientes