У меня есть сохраненный процесс, который должен сделать вызов Square API AddCustomer.Он использует родной TSQL и другие процессы.Я знаю риски, связанные с процессами, но это то, что у меня есть, поэтому, хотя я понимаю, что CLR лучше всего подходит, у меня есть то, что у меня есть.
Когда я перевожу это в вызов SQL, онвыдает ошибку аутентификации:
{"errors": [{"category": "AUTHENTICATION_ERROR", "code": "UNAUTHORIZED", "detail": "Ваш запрос не содержит Authorization
http заголовок с токеном доступа. Ожидается, что значение заголовка будет иметь формат \ "Bearer TOKEN \" (без кавычек), где TOKEN должен быть заменен вашим токеном доступа
Я проверил вызов в Почтальоне, и он там прекрасно работает.
DECLARE @authHeader NVARCHAR(64)
,@contentType NVARCHAR(64)
,@responseText NVARCHAR(2000)
,@responseXML NVARCHAR(2000)
,@ret INT
,@status NVARCHAR(32)
,@statusText NVARCHAR(32)
,@token INT
,@url NVARCHAR(256)
SELECT @authHeader = 'Bearer sandbox-xxxxx-xxxxxxxxxxxxx-xx'
,@contentType = 'application/json';
SELECT @url = 'https://connect.squareup.com/v2/customers'
-- Open the connection.
EXEC @ret = sp_OACreate 'MSXML2.ServerXMLHTTP', @token OUT;
EXEC sp_OAMethod @token, 'open', NULL, 'post',@url, 'false'
EXEC sp_OAMethod @token, 'setRequestHeader', NULL, 'Authentication', @authHeader;
EXEC sp_OAMethod @token, 'setRequestHeader', null, 'Content-Type', 'application/json'
EXEC sp_OAMethod @token, 'send', null, @body
EXEC sp_OAMethod @token, 'responseText', @ResponseText OUTPUT
Select @ResponseText
Как видите, у меня установлена аутентификация (токен песочницы верен, но удален здесь).
Я не могу понять, почему он неправильно устанавливает заголовки.