我有一个特定的客户地址,我需要使用API密钥从Google获取纬度和经度坐标,但是sp_OAGetProperty返回的是空白而不是XML数据,这可能是返回空白结果的原因?
这是出于地理分析的目的,我将服务器重新配置为接受Ole Automation Procedures的执行,但仍然相同。
我正在使用代码。
use Development_Weekly
go
DECLARE @Response varchar(8000)
DECLARE @XML xml
DECLARE @Obj int
DECLARE @Result int
DECLARE @HTTPStatus int
DECLARE @Erreur varchar(MAX)
declare @MessageErreur varchar(max)
declare @MessageErreurAvecNumero varchar(max)
declare @URL varchar(600) =(select top 1 [BranchAddressURL] from [Development_Weekly].[dbo].[vwBranchLocation])
EXEC @Result = sp_OACreate 'MSXML2.ServerXMLHttp', @Obj OUT
if @Erreur <> 0 begin set @MessageErreur = 'sp_OACreate MSXML2.ServerXMLHttp.3.0 failed' end
--BEGIN TRY
EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false
if @Erreur <> 0 begin set @MessageErreur = 'sp_OAMethod MSXML2.ServerXMLHttp.3.0 failed' end
EXEC @Result = sp_OAMethod @Obj, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded'
if @Erreur <> 0 begin set @MessageErreur = 'sp_OAMethod MSXML2.ServerXMLHttp.3.0 failed' end
EXEC @Result = sp_OAMethod @Obj, send, NULL, ''
if @Erreur <> 0 begin set @MessageErreur = 'sp_OAMethod MSXML2.ServerXMLHttp.3.0 failed' end
EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml', @Response OUT
if @Erreur <> 0 begin set @MessageErreur = 'sp_OAGetProperty MSXML2.ServerXMLHttp.3.0 failed' end
EXEC @Result = sp_OADestroy @Obj
if @Erreur <> 0 begin set @MessageErreur = 'sp_OADestroy MSXML2.ServerXMLHttp.3.0 failed' end
select @Result,@Response,@URL
答案 0 :(得分:0)
我不确定没有真实网址的确切原因是什么。但是我总是将响应插入到表变量中,而不是使用@Response OUT
来避免结果被截断。这是我通常的工作:
DECLARE @TABLEVAR TABLE (responseXml VARCHAR(MAX))
--skip some codes here
INSERT INTO @TABLEVAR
EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml' --, @Response OUT
EXEC sp_OADestroy @Obj
SELECT @Response = responseXml FROM @TABLEVAR