【发布时间】:2014-03-11 08:33:52
【问题描述】:
我想从我的存储过程中调用一个网络服务并获得一个 XML 应答。我真的不知道该怎么做,因为我以前没有做过这样的事情。
这是我的存储过程的样子:
USE [master]
GO
/****** Object: StoredProcedure [dbo].[webServiceCall] Script Date: 3/11/2014 9:12:49 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[webServiceCall]
-- Add the parameters for the stored procedure here
@personnr varchar (20),
@username varchar (20),
@password varchar (20)
AS
DECLARE @obj INT
DECLARE @ValorDeRegreso INT
DECLARE @hr INT
DECLARE @src varchar(255)
DECLARE @desc varchar (255)
DECLARE @srv varchar (200)
DECLARE @response varchar (8000)
SET @srv = 'http://..../nasherpopman/PopManWebService.asmx?op=GetPerson&personnumber=' + @personnr +'&username=' + @username + '&password=' + @password +''
EXEC sp_OACreate 'MSXML2.ServerXMLHttp', @obj OUT
EXEC sp_OAMethod @obj, 'open', NULL, 'POST', @srv, false
EXEC sp_OAMethod @obj, 'send'
EXEC sp_OAGetProperty @obj, 'responseText', @response out
SELECT @response [response]
EXEC sp_OADestroy @obj
RETURN
现在我收到此错误:服务器无法处理请求。 ---> 缺少根元素
我只是不知道该怎么做,或者我在这里做错了什么。
如果我尝试运行 url,我会得到这个:
GetPerson
Test
The test form is only available for requests from the local machine.
SOAP 1.1
The following is a sample SOAP 1.1 request and response. The placeholders shown need to be replaced with actual values.
POST /nasherpopman/PopManWebService.asmx HTTP/1.1
Host: .....
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/GetPerson"
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetPerson xmlns="http://tempuri.org/">
<personnumber>string</personnumber>
<username>string</username>
<password>string</password>
</GetPerson>
</soap:Body>
</soap:Envelope>
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<GetPersonResponse xmlns="http://tempuri.org/">
<GetPersonResult>
<personResult>string</personResult>
</GetPersonResponse>
</soap:Body>
</soap:Envelope>
【问题讨论】:
-
您使用的是什么版本的 SQL Server?
-
您是否尝试过将该方法调用直接粘贴到浏览器中?您是否仍然收到“缺少根元素”错误?
-
是的,它没有给我错误,但也没有给我答案。
-
给我们一个webservice返回的例子。
-
@MikkaRin 我刚刚编辑了上面的返回。虽然它不是真正的回报,更像是服务的构建方式
标签: sql web-services stored-procedures sql-server-2012