Applicazioni di esempio per l'invio di richieste ai servizi Web XML nativi
Gli esempi seguenti illustrano l'invio delle richieste SOAP e l'elaborazione delle risposte. Gli esempi includono un client di Visual Studio 2005, sia C# che Visual Basic.
- Invio di richieste SOAP utilizzando il client di Visual Studio 2005 (C#)
- Invio di richieste SOAP utilizzando il client di Visual Studio 2005 (Visual Basic)
Configurazione iniziale
Per tutte le le applicazioni di esempio è necessaria una configurazione comune, che comprende i passaggi seguenti:
- Creazione di una stored procedure di esempio.
- Creazione di una funzione definita dall'utente.
- Creazione dell'endpoint HTTP SOAP.
[!NOTA] Per creare questi oggetti nel database di esempio AdventureWorks è possibile utilizzare SQL Server Management Studio oppure l'utilità osql. Per installare il database di esempio AdventureWorks, vedere Esecuzione del programma di installazione dei database di esempio AdventureWorks e degli esempi.
Creazione della stored procedure (GetCustomerInfo)
La stored procedure seguente è progettata per illustrare la gestione dei parametri di input e di output, del codice restituito, dei risultati di query e degli eventuali errori da parte di un'applicazione client.
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
La stored procedure include due parametri: un parametro di input (CustomerID
) e un parametro di output (OutParam
) per illustrare la procedura di passaggio dei parametri.
La stored procedure esegue le istruzioni seguenti:
- Un'istruzione
INSERT
che ha esito negativo e restituisce un errore. L'errore è intenzionale, per illustrare la restituzione degli errori nella risposta SOAP. In Visual Studio 2005 gli errori vengono restituiti come oggetti SqlMessage. - Un'istruzione
SELECT
. In Visual Studio 2005 il set di righe risultante viene restituito come oggetto DataSet. - Una query
SELECT FOR XML
che restituisce dati XML. In Visual Studio 2005 il set di righe risultante viene restituito come oggetto SqlXml. - Un'istruzione
PRINT
, il cui risultato viene restituito in Visual Studio 2005 come oggetto SqlMessage.
Creazione della funzione definita dall'utente (UDFREturningAScalar)
La funzione restituisce un valore integer.
USE AdventureWorks
GO
CREATE FUNCTION UDFReturningAScalar()
RETURNS int
AS
BEGIN
RETURN 555
END
Go
Creazione dell'endpoint HTTP SOAP (sql_endpoint)
L'endpoint espone la stored procedure e la funzione definita dall'utente come metodi Web ed è configurato per consentire le query ad hoc. L'applicazione client può inviare richieste SOAP di query ad hoc all'endpoint.
Si noti che sarà necessario immettere il nome del server come valore hostname quando si prenota lo spazio dei nomi HTTP (sp_reserve_http_namespace
) per l'endpoint e anche quando si completa il parametro SITE
. Il valore port inoltre deve corrispondere alla porta HTTP utilizzata dall'istanza di SQL Server, ad esempio "80" o un altro numero di porta TCP se applicabile.
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
Nel codice precedente, si noti quanto segue:
- Nella creazione di questo endpoint vengono definiti due metodi Web.
- Il valore
WSDL
è impostato suDEFAULT
. Il client pertanto può richiedere una risposta WSDL dal server. - Il valore
BATCHES
è impostato suENABLED
. Il client pertanto può inviare richieste di query ad hoc all'endpoint. - Il metodo Web
UDFReturningAScalar
non specifica lo spazio dei nomi facoltativo e utilizza lo spazio dei nomi specificato nel valoreNAMESPACE
. - I valori di domain\userOrGroup creati come account di accesso di SQL Server vanno impostati sull'utente o il gruppo di dominio corrente che richiede l'accesso all'endpoint HTTP.
Vedere anche
Riferimento
Aggiunta di intestazioni SOAP alle applicazioni client
Aggiunta di supporto per la traccia SOAP nelle applicazioni client
Impostazione del server per l'attesa delle richieste di servizi Web XML nativi
Struttura dei messaggi di richiesta e di risposta SOAP
Linee guida e limitazioni per i servizi Web XML nativi
Concetti
Gestione del tipo di dati xml e dei tipi CLR definiti dall'utente
Altre risorse
Sviluppo di applicazioni client