Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
Подскажите как можно стянуть данные (например XML файл) из Internet при помощи сиевела?

На форуме нашел MSXML2.DOMDocument, но проблема в том что в мир хочу через прокси, как можно сказать сиквелу чтобы он ходил в мир через прокси? + может есть каоке другое решение на сиквеле.

Примечание.
Сиквел 2000 хотя если 2000 такое не может то и 2005 подойдет.
24 апр 07, 16:36    [4063953]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Glory
Member

Откуда:
Сообщений: 104764
makcumys
Подскажите как можно стянуть данные (например XML файл) из Internet при помощи сиевела?

На форуме нашел MSXML2.DOMDocument, но проблема в том что в мир хочу через прокси, как можно сказать сиквелу чтобы он ходил в мир через прокси? + может есть каоке другое решение на сиквеле.

Сиквелу вы ничего не скажите, т.к. в интернет будет "ходить" объект MSXML2
24 апр 07, 16:40    [4063984]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
гм. намек понял пошел рыть MSXML2
24 апр 07, 16:57    [4064091]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
решение было так близко :) нашел тут
24 апр 07, 17:23    [4064305]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
все оказалось достаточно печально :( пример как не кручу не работает.

пишет Proxy Authentication Required.

Хотя к примеру обычный VBScript прекрасно работает.

set objXMLHTTP = CreateObject("MSXML2.ServerXMLHTTP.4.0") 

objXMLHTTP.Open "GET", "http://www.cbr.ru/scripts/XML_daily.asp?date_req=24/04/2007", False
objXMLHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objXMLHTTP.setRequestHeader "Accept-Charset", "Windows-1251"
objXMLHTTP.send ""

WScript.Echo objXMLHTTP.responseText
24 апр 07, 19:14    [4064949]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
эту проблему поборол но появилась новая русские символы почему то превращаються в такие вот крякозяблы Aano?aeeeneee aieea? как от этого избавиться?

п.с.
проблема поборолась
set @str = 'SetCredentials("' + @loginName + '","' + @pwd + '", 1)'
EXEC @hResult = master.dbo.sp_OAMethod @objectID, @str
либо запуском службы сиквела от своего имени.
перед send
24 апр 07, 21:17    [4065354]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Glory
Member

Откуда:
Сообщений: 104764
makcumys
эту проблему поборол но появилась новая русские символы почему то превращаються в такие вот крякозяблы Aano?aeeeneee aieea? как от этого избавиться?

Превращаются где ?
24 апр 07, 21:44    [4065436]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 551
Полный код свой покажи, пжлста.
Жутко интересно
25 апр 07, 10:01    [4066309]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
Вот сам код
declare
	@URI varchar(2000),
	@methodName varchar(50),
	@responseText varchar(4000),
	@UserName varchar(50), 
	@PWD varchar(50)

SELECT 
	@URI = 'http://www.cbr.ru/scripts/XML_daily.asp?date_req=24/04/2007',
	@methodName = 'GET',
	@UserName = 'domain\login', 
	@PWD = 'password'
	

IF 	@methodName = ''
BEGIN
	select FailPoint = 'Method Name must be set'
	return
END 
set 	@responseText = 'FAILED'

DECLARE @objectID int
DECLARE @hResult int
DECLARE @source varchar(255), @desc varchar(255)

--здесь выбери тот объект, который у тебя будет работать
--EXEC 	@hResult = sp_OACreate 'MSXML2.ServerXMLHTTP.4.0', @objectID OUT
EXEC 	@hResult = master.dbo.sp_OACreate 'WinHttp.WinHttpRequest.5.1', @objectID OUT
--EXEC 	@hResult = sp_OACreate 'MSXML2.ServerXMLHttp', @objectID OUT
--EXEC 	@hResult = sp_OACreate 'Microsoft.XMLHTTP', @objectID OUT

IF @hResult <> 0
BEGIN
	EXEC master.dbo.sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT 
	SELECT 	hResult = convert(varbinary(4), @hResult), 
			source = @source, 
			description = @desc,
			FailPoint = 'Create failed',
			MedthodName = @methodName
	goto destroy
	return
END

-- open the destination URI with Specified method
EXEC @hResult = master.dbo.sp_OAMethod @objectID, 'open', null, @methodName, @URI, 'false'
IF @hResult <> 0
BEGIN
	EXEC master.dbo.sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT 
	SELECT 	hResult = convert(varbinary(4), @hResult), 
		source = @source, 
		description = @desc,
		FailPoint = 'Open failed',
		MedthodName = @methodName
	goto destroy
	return
END

-- set request headers
EXEC @hResult = master.dbo.sp_OAMethod @objectID, 'setRequestHeader', null, 'Content-Type', 'text/xml; charset=windows-1251'
IF @hResult <> 0
BEGIN
	EXEC master.dbo.sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT 
	SELECT 	hResult = convert(varbinary(4), @hResult), 
		source = @source, 
		description = @desc,
		FailPoint = 'SetRequestHeader failed: Content-Type',
		MedthodName = @methodName
	goto destroy
	return
END

declare @str varchar(1000)
set @str = 'SetCredentials("' + @UserName + '","' + @PWD + '", 1)'
EXEC @hResult = master.dbo.sp_OAMethod @objectID, @str
IF @hResult <> 0
BEGIN
	EXEC sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT 
	SELECT 	hResult = convert(varbinary(4), @hResult), 
		source = @source, 
		description = @desc,
		FailPoint = 'SetProxy'
	goto destroy
	return
END

EXEC 	@hResult = master.dbo.sp_OAMethod @objectID, 'send', null, ''
IF 	@hResult <> 0
BEGIN
	EXEC master.dbo.sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT 
	SELECT 	hResult = convert(varbinary(4), @hResult), 
		source = @source, 
		description = @desc,
		FailPoint = 'Send failed',
		MedthodName = @methodName
	goto destroy
	return
END

declare @statusText varchar(1000), @status varchar(1000)
-- Get status text
exec master.dbo.sp_OAGetProperty @objectID, 'StatusText', @statusText out 
exec master.dbo.sp_OAGetProperty @objectID, 'Status', @status out 

select hResult=@hResult, status=@status, statusText=@statusText, methodName=@methodName

-- Get response text
exec master.dbo.sp_OAGetProperty @objectID, 'responseText', @responseText out 
select responseText=@responseText

IF @hResult <> 0
BEGIN

	EXEC master.dbo.sp_OAGetErrorInfo @objectID, @source OUT, @desc OUT 
	SELECT 	hResult = convert(varbinary(4), @hResult), 
		source = @source, 
		description = @desc,
		FailPoint = 'ResponseText failed',
		MedthodName = @methodName
	goto destroy
	return
END

destroy:
	exec master.dbo.sp_OADestroy @objectID

А возвращает следующее.

<?xml version="1.0" encoding="windows-1251" ?>
<ValCurs Date="24/04/2007" name="Foreign Currency Market">
<Valute ID="R01010">
<NumCode>036</NumCode>
<CharCode>AUD</CharCode>
<Nominal>1</Nominal>
<Name>Aano?aeeeneee aieea?</Name>
<Value>21,4956


Как побороть крякозяблы?
25 апр 07, 13:55    [4068478]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Glory
Member

Откуда:
Сообщений: 104764
Например, переменную, в которой сохраняется результат, сделать nvarchar
25 апр 07, 14:07    [4068584]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
Тот же эффект :(
25 апр 07, 14:24    [4068732]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
может я как то не так получаю этот xml файл? так как если через бройзер смотреть то все символы отображаються нормально.
25 апр 07, 14:27    [4068754]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 551
responseBody вместо responseText попробуй использовать.

Скрипт запускаешь из QA ?
25 апр 07, 15:07    [4069045]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 551
Вот это видел?
25 апр 07, 15:16    [4069126]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
Да скрипт запускаю из QA.

А вот если поставить responseBody то результат выходит вот такой :(

Для varchar
?????????•???????????•???????????????????

Для nvarchar
㼿㼿㼿㼿锿㼿㼿㼿㼿㼿锿㼿㼿㼿

есть еще предположения? + у тебя я смотрю тоже проблема в соседней ветке, с кодировкой никак ничего побороть неудалось? народ вроде файлы тягает но про проблему свою пока ничего ненашел.
25 апр 07, 15:17    [4069134]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 551
MSXML2.DOMDocument
он легко получает русские буквы.
но только то, что влезет в varchar.
я хотел что-нить, чтобы БОЛЬШУЮ страницу скачать
25 апр 07, 15:22    [4069183]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
а какова методика превращения иероглифов в русские буквы? неподскажеш?
25 апр 07, 15:33    [4069283]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Glory
Member

Откуда:
Сообщений: 104764
Max-xaM
MSXML2.DOMDocument
он легко получает русские буквы.
но только то, что влезет в varchar.
я хотел что-нить, чтобы БОЛЬШУЮ страницу скачать

create table #result(f1 text)
insert #result exec master.dbo.sp_OAGetProperty @objectID, 'responseText'
25 апр 07, 15:43    [4069350]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 551
Glory
Max-xaM
MSXML2.DOMDocument
он легко получает русские буквы.
но только то, что влезет в varchar.
я хотел что-нить, чтобы БОЛЬШУЮ страницу скачать

create table #result(f1 text)
insert #result exec master.dbo.sp_OAGetProperty @objectID, 'responseText'


ПРОХОДИЛИ....
Нет русских букв!
25 апр 07, 15:48    [4069385]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Glory
Member

Откуда:
Сообщений: 104764
Max-xaM
Glory
Max-xaM
MSXML2.DOMDocument
он легко получает русские буквы.
но только то, что влезет в varchar.
я хотел что-нить, чтобы БОЛЬШУЮ страницу скачать

create table #result(f1 text)
insert #result exec master.dbo.sp_OAGetProperty @objectID, 'responseText'


ПРОХОДИЛИ....
Нет русских букв!

У меня есть и ничего с сервером я для этого не делал
25 апр 07, 15:51    [4069404]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 551
Glory
У меня есть и ничего с сервером я для этого не делал


Тогда полный код получения странички покажи.
И Попробуй скачать вот такую: http://lost.video-x.ru/index.php

сколько байт получилось?
25 апр 07, 15:52    [4069417]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
Русские буквы есть. но появилась вторая проблема. Как мне тогда на проксе авторизироваться?

старый метод
declare @str varchar(1000)
set @str = 'SetCredentials("' + @UserName + '","' + @PWD + '", 1)'
EXEC @hResult = master.dbo.sp_OAMethod @objectID, @str

неработает :(

замкнутый круг прям...
25 апр 07, 15:54    [4069432]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 551
makcumys
Русские буквы есть.


Как сделал?
25 апр 07, 15:55    [4069438]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
makcumys
Member

Откуда: г. Киев
Сообщений: 131
гм.. мою xml (http://www.cbr.ru/scripts/XML_daily.asp?date_req=24/04/2007) старницу тянет. а вот html чет нехочет и впрямь... с ходу мож MSXML2.DOMDocument не для того предназначена?
25 апр 07, 15:57    [4069461]     Ответить | Цитировать Сообщить модератору
 Re: MSSQL XML Internet  [new]
Max-xaM
Member

Откуда: Гусь-Хрустальный
Сообщений: 551
makcumys
гм.. мою xml (http://www.cbr.ru/scripts/XML_daily.asp?date_req=24/04/2007) старницу тянет. а вот html чет нехочет и впрямь... с ходу мож MSXML2.DOMDocument не для того предназначена?

Вот тебе:
-- курс валют центробанка на сегодня
declare @xmlString nvarchar(4000), @url varchar(255), @retVal INT, @oXML INT, @loadRetVal INT, @h int
declare @d1 datetime
set @d1 = GetDate()

select @url = 'http://www.cbr.ru/scripts/XML_daily.asp?date_req=' + Convert(char(10), @d1, 103)
	EXEC @retVal = sp_OACreate 'MSXML2.DOMDocument', @oXML OUTPUT
	EXEC @retVal = sp_OASetProperty @oXML, 'async', 0
	EXEC @retVal = sp_OAMethod @oXML, 'load', @loadRetVal OUTPUT, @url
	EXEC @retVal = sp_OAMethod @oXML, 'xml', @xmlString OUTPUT
	EXEC sp_OADestroy @oXML

	exec sp_xml_preparedocument  @h output, @xmlString
select cast(floor(cast(@d1 as float)) as smalldatetime) as Data, CharCode, Nominal, Convert(money, replace(Value, ',', '.')) 'Value'
from OpenXML (@h, '//Valute', 0)
with ( Name varchar(99) './Name', Nominal int './Nominal', Value varchar(10) './Value', CharCode varchar(9) './CharCode' )

	exec sp_xml_removedocument @h

Я курсы валют давно уже знаю как тянуть.
Осталось разобраться с обычными страницами
25 апр 07, 16:02    [4069486]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить