richardtwyning Ответов: 2

Отправка веб-запроса x-www-form-urlencoded с SQL server


У меня есть проект, в котором мне нужно отправить XML-веб-запрос в виде x-www-form-urlencoded, но мне нужно отправить его из хранимой процедуры SQL Server, и XML должен быть отправлен как ключевое значение с именем ключа "xml_in". Я никогда раньше не занимался веб-разработкой, и это первый раз, когда я отправляю веб-запрос из SQL, поэтому у меня очень мало знаний о sp_OAMethod, чтобы знать, как указать запрос.
Любая помощь очень ценится.

Большое спасибо.

С уважением,
Ричард Твайнинг

Что я уже пробовал:

Объявить @PostData тип varchar(Макс) = 'xml_in=' + конвертировать(тип varchar(Макс), @XML-файле)

Msxml2 описывается метод exec @рет = процедуры sp_oacreate '.Для serverxmlhttp', @маркера из;
IF @ret <> 0 RAISERROR('невозможно открыть HTTP-соединение.', 10, 1);

-- Отправьте запрос.
Метод exec @рет = процедуру sp_oamethod @маркер, 'открыть', значение null, 'пост', @URL-адрес, "ложь";
--Метод exec @рет = процедуру sp_oamethod @маркер, 'добавляет', значение null, 'проверка подлинности', @authHeader; --Rich.T. аутентификация не требуется для TNT
Метод exec @рет = процедуру sp_oamethod @маркер, 'добавляет', значение null, 'тип содержимого', @значение contentType;
Метод exec @рет = процедуру sp_oamethod @маркер, 'добавляет', значение null, 'пользователь-агент', 'Ship_socket/1.0'
--Метод exec @рет = процедуру sp_oamethod @маркер, 'добавляет', значение null, 'xml_in', @XML-файле

-- Метод exec @рет = процедуру sp_oamethod @маркер, 'отправить', нуль, нуль;
Метод exec @рет = процедуру sp_oamethod @маркер, 'отправить', значение null, @PostData


-- Займись ответом.
Метод exec @рет = процедура sp_oagetproperty @маркер, 'статус', @статус из;
Метод exec @рет = процедура sp_oagetproperty @маркер, 'statustext также', @statustext также из;
Метод exec @рет = процедура sp_oagetproperty @маркер, 'responseText', @responseText из;

-- Покажи ответ.
PRINT 'Status:' + @status + ' (' + @statusText + ')';
Печатать текст ответа: '+ @responseText;

-- Закройте соединение.
EXEC @ret = sp_OADestroy @token;
IF @ret <> 0 RAISERROR('невозможно закрыть HTTP-соединение.', 10, 1);

Выберите @responseText

2 Ответов

Рейтинг:
6

richardtwyning

Msxml2 описывается метод exec @рет = процедуры sp_oacreate '.Для serverxmlhttp.3.0', @маркера из;
IF @ret <> 0 RAISERROR('невозможно открыть HTTP-соединение.', 10, 1);

-- Отправьте запрос.
Метод exec @рет = процедуру sp_oamethod @маркер, 'открыть', значение null, 'пост', @URL-адрес, "ложь";
Метод exec @рет = процедуру sp_oamethod @маркер, 'добавляет', значение null, 'тип содержимого', 'применение/х-www-формы-urlencoded';

DECLARE @HTTP_Params varchar(2000) = "
Содержание комплекта @HTTP_Params = 'xml_in='+@
Метод exec @рет = процедуру sp_oamethod @маркер, 'отправить', значение null, @HTTP_Params

-- Займись ответом.
Метод exec @рет = процедура sp_oagetproperty @маркер, 'статус', @статус из;
Метод exec @рет = процедура sp_oagetproperty @маркер, 'statustext также', @statustext также из;

Вставить в @responseTable(ResponseText) EXEC @ret = sp_OAMethod @token, 'RESPONSETEXT'
Если @ret <> 0 начинается
Метод exec вызов sp_oageterrorinfo @маркер, @источник, @убыв из

Выделите ошибку=-93, ErrMessage='ответ (ResponseText) не в '+@источник+' ошибка: '+конвертировать(тип varchar,@рет)+' '+@алфавиту
КОНЕЦ
SET @ResponseText = (выберите TOP 1 ResponseText из @responseTable)

-- Покажи ответ.
PRINT 'Status:' + @status + ' (' + @statusText + ')';
Печатать текст ответа: '+ @responseText;

-- Закройте соединение.
EXEC @ret = sp_OADestroy @token;
IF @ret <> 0 RAISERROR('невозможно закрыть HTTP-соединение.', 10, 1);

Выберите @status в качестве [Status],
@statustext также как [statustext также],
@responseText как [ResponseText]


Рейтинг:
1

Richard MacCutchan

Видеть Отправка XML с помощью application/x-www-form-urlencoded и ключа[^Возможно, вам двоим следует собраться с мыслями и решить, что нужно сделать.