2014-01-25 4 views
1

У меня есть веб-сервис с веб-методом, который перекликается с тем, что вы его передаете.Call Web Service от SQL Server

Я пытаюсь вызвать свой веб-метод из кода T-SQL, но он не работает и не дает никаких исключений или ошибок.

Вот код:

sp_configure 'show advanced options', 1; 
GO 

RECONFIGURE; 
GO 

sp_configure 'Ole Automation Procedures', 1; 
GO 

RECONFIGURE; 
GO 

Declare @Object as Int; 
Declare @ResponseText as Varchar(8000); 

Exec sp_OACreate 'MSXML2.ServerXMLHTTP', @Object OUT; 

Exec sp_OAMethod @Object, 'open', NULL, 'get', 
    'http://vserver250:8600/EcomSmsSvc.asmx/Reply?message=hi','false' 

Exec sp_OAMethod @Object, 'send' 

Exec sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT 

Select @ResponseText 

Exec sp_OADestroy @Object 

Мой веб-сервис работает нормально, и когда я называю его через веб-браузеры это возвращает сообщение я посылаю его, но когда я называю его из T-SQL результат всегда NULL.

Может ли кто-нибудь помочь мне узнать, где проблема?

+1

Если вам действительно нужно вызвать веб-службу из T-SQL (плохая идея, на мой взгляд), я бы рекомендовал использовать функциональность SQLCLR (а не неуклюжий старый подход 'sp_OAmethod'). Создайте хранимую процедуру C# с использованием SQL-CLR и разверните ее в SQL Server –

+0

благодаря обеспечению четкого решения @marc_s. Можете ли вы рассказать мне, как подать пример? –

+0

Поиск Google или Bing для «использования хранимой процедуры sql-clr» - есть ** тонны ** материала по этому вопросу. У меня нет конкретной ссылки, которую я мог бы порекомендовать - вам нужно провести какое-то исследование самостоятельно! –

ответ

0

Я бы предложил сделать это с помощью клиента веб-сервиса , встроенного в .NET.. Я предполагаю, что это было бы более чистым решением, более удобным для обслуживания и легче тестировать и отлаживать.

In this post вы можете найти такой пример.

Надеюсь, я помог!

Смежные вопросы