使用SQL发布XML无效,但Postman正常工作

问题描述 投票:0回答:1
EXEC @ret = sp_OACreate 'MSXML2.ServerXMLHTTP', @token OUT;
IF @ret <> 0 RAISERROR('Unable to open HTTP connection.', 10, 1);

-- Send the request.
EXEC @ret = sp_OAMethod @token, 'open', NULL, 'POST', @url, 'false';

--set a custom header Authorization is the header key and VALUE is the value in the header
EXEC @ret = sp_OAMethod @token, 'SetRequestHeader', NULL, 'Authorization', @authHeader

--EXEC @ret = sp_OAMethod @token, 'setRequestHeader', NULL, 'Authentication', @authHeader;
EXEC @ret = sp_OAMethod @token, 'setRequestHeader', NULL, 'Content-Type', 'text/xml';
EXEC @ret = sp_OAMethod @token, 'send', NULL, @postData;
-- Handle the response.
EXEC @ret = sp_OAGetProperty @token, 'status', @status OUT;
EXEC @ret = sp_OAGetProperty @token, 'statusText', @statusText OUT;
EXEC @ret = sp_OAGetProperty @token, 'responseText', @responseText OUT;

这在SQL Server 2008中不起作用(“没有XML数据”。)>

但是所有这些工作(使用Postman上的代码功能)。使用您最了解的方式告诉我我的SQL Server过程在哪里错误:

C#-RestSharp

var client = new RestClient(<URL HERE>);
client.Timeout = -1;

var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "text/xml");
request.AddHeader("Authorization", "Basic <AUTH HERE>");
request.AddParameter("text/xml", "<XML HERE>,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

Python-http.client

import http.client
import mimetypes
conn = http.client.HTTPSConnection(<URL START HERE>)
payload = "<XML HERE>"
headers = {
  'Content-Type': 'text/xml',
  'Authorization': 'Basic <AUTH HERE>'
}
conn.request("POST", "<URL END HERE>", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))

Javascript-jquery

var settings = {
  "url": "<URL HERE>",
  "method": "POST",
  "timeout": 0,
  "headers": {
    "Content-Type": "text/xml",
    "Authorization": "Basic <AUTH HERE>"
  },
  "data": "<XML HERE>",
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
    

EXEC @ret = sp_OACreate'MSXML2.ServerXMLHTTP',@token OUT; IF @ret <> 0 RAISERROR('无法打开HTTP连接。',10,1); -发送请求。 EXEC @ret = sp_OAMethod @token,'打开',NULL,'...

sql-server xml web-services postman
1个回答
0
投票

它不起作用,因为它是旧的(2008)SQL Server。复制到一个现代的,它工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.