consumir web service desde sql
Publicado por Omar VIllalobos (2 intervenciones) el 06/10/2013 02:28:11
Hola, buen dia...
estoy tratando de consumir un webservice mediante una URL y necesito ayuda en SQL server
el sistema lo que ocupa es consumir lo mismo en C# y en SQL por diferentes tipos de consultas.
lo que tiene que hacer es:
mediante una URL autenticarte con un usuario y password ya autenticado por medio de otra URL busca la informacion en el webservice.
lo que hice en C# fue guardar las cookies para poder acceder a la otra liga,
en SQL no se como hacerlo... tengo el siguiente codigo, a ver si alguien puede ayudarme.
nota: este codigo es un ejemplo, este si funciona, no se como hacer los 2 request.
USE tempdb
GO
IF OBJECT_ID('tempdb..#xml') IS NOT NULL DROP TABLE #xml
CREATE TABLE #xml ( yourXML XML )
GO
DECLARE @URL VARCHAR(8000)
SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?latlng=10.247087,-65.598409&sensor=false' -- This works
SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?latlng=10.247087,-67.598409&sensor=false' -- This doesn't as string is too long
--SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?latlng=10.247087,-67.598409'
DECLARE @Response varchar(8000)
DECLARE @XML xml
DECLARE @Obj int
DECLARE @Result int
DECLARE @HTTPStatus int
DECLARE @ErrorMsg varchar(MAX)
EXEC @Result = sp_OACreate 'MSXML2.XMLHttp', @Obj OUT
EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false
EXEC @Result = sp_OAMethod @Obj, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded'
EXEC @Result = sp_OAMethod @Obj, send, NULL, ''
EXEC @Result = sp_OAGetProperty @Obj, 'status', @HTTPStatus OUT
INSERT #xml ( yourXML )
EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml'--, @Response OUT
SELECT *
FROM #xml
SELECT x.*, y.c.query('.')
FROM #xml x
CROSS APPLY x.yourXML.nodes('/GeocodeResponse/status') y(c)
estoy tratando de consumir un webservice mediante una URL y necesito ayuda en SQL server
el sistema lo que ocupa es consumir lo mismo en C# y en SQL por diferentes tipos de consultas.
lo que tiene que hacer es:
mediante una URL autenticarte con un usuario y password ya autenticado por medio de otra URL busca la informacion en el webservice.
lo que hice en C# fue guardar las cookies para poder acceder a la otra liga,
en SQL no se como hacerlo... tengo el siguiente codigo, a ver si alguien puede ayudarme.
nota: este codigo es un ejemplo, este si funciona, no se como hacer los 2 request.
USE tempdb
GO
IF OBJECT_ID('tempdb..#xml') IS NOT NULL DROP TABLE #xml
CREATE TABLE #xml ( yourXML XML )
GO
DECLARE @URL VARCHAR(8000)
SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?latlng=10.247087,-65.598409&sensor=false' -- This works
SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?latlng=10.247087,-67.598409&sensor=false' -- This doesn't as string is too long
--SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?latlng=10.247087,-67.598409'
DECLARE @Response varchar(8000)
DECLARE @XML xml
DECLARE @Obj int
DECLARE @Result int
DECLARE @HTTPStatus int
DECLARE @ErrorMsg varchar(MAX)
EXEC @Result = sp_OACreate 'MSXML2.XMLHttp', @Obj OUT
EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false
EXEC @Result = sp_OAMethod @Obj, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded'
EXEC @Result = sp_OAMethod @Obj, send, NULL, ''
EXEC @Result = sp_OAGetProperty @Obj, 'status', @HTTPStatus OUT
INSERT #xml ( yourXML )
EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml'--, @Response OUT
SELECT *
FROM #xml
SELECT x.*, y.c.query('.')
FROM #xml x
CROSS APPLY x.yourXML.nodes('/GeocodeResponse/status') y(c)
Valora esta pregunta


0