从 T-sql 设置肥皂请求属性

2024-02-27

下面是我用来连接到我的 api 服务器的代码。对于其他调用来说一切正常,但是当涉及到上传图像时,它就不起作用了。如果我将代码复制到 SoapUI 并从那里运行,它确实可以工作,但在 SoapUI 中我必须将请求属性“启用内联文件”更改为 true。 有谁知道如何在下面的代码中传递该属性值?

declare 
@Url varchar(1024),
@HttpMethod varchar(10),
@ParamsValues varchar(1024), 
@SoapAction varchar(8000) 

DECLARE @t table (ID int, strxml xml)

set @Url = 'https://api.my.com/api.asmx'
set @HttpMethod = 'soap'
set @SoapAction = '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:apic="http://apiconn.com">
   <soap:Header/>
   <soap:Body>
      <apic:AddBook>
         <apic:addbookID>18</apic:addbookID>
         <apic:data>file:C:/temp/Book2.csv</apic:data>
         <apic:dataType>CSV</apic:dataType>
      </apic:AddBook>
   </soap:Body>
</soap:Envelope>'


if @HttpMethod in ('get','GET') and len(@ParamsValues) > 0
begin
    set @Url = @Url + '?' + @ParamsValues   
end

declare @obj int
    ,@response varchar(8000)
    ,@responseText varchar(8000)
    ,@status varchar(50)
    ,@statusText varchar(1024)
    ,@method varchar(10) = (case when @HttpMethod in ('soap','SOAP') then 'POST' else @HttpMethod end)

--exec sp_OACreate 'WinHttp.WinHttpRequest.5.1', @obj out
exec sp_OACreate 'MSXML2.ServerXMLHTTP', @obj out
exec sp_OAMethod @obj, 'Open', null, @method, @Url, false

if @HttpMethod in ('get','GET')
begin
    exec sp_OAMethod @obj, 'send'
end
else if @HttpMethod in ('post','POST')
begin
    exec sp_OAMethod @obj, 'setRequestHeader', null, 'Content-Type', 'application/x-www-form-urlencoded'
    exec sp_OAMethod @obj, 'send', null, @ParamsValues
end
else if @HttpMethod in ('soap','SOAP')
begin
    if @SoapAction is null
        raiserror('@SoapAction is null', 10, 1)

    declare @host varchar(1024) = @Url
    if @host like 'http://%'
        set @host = right(@host, len(@host) - 7)
    else if @host like 'https://%'
        set @host = right(@host, len(@host) - 8)

    if charindex(':', @host) > 0 and charindex(':', @host) < charindex('/', @host)
        set @host = left(@host, charindex(':', @host) - 1)
    else 
        set @host = left(@host, charindex('/', @host) - 1)

    exec sp_OAMethod @obj, 'setRequestHeader', null, 'Content-Type', 'text/xml; charset=utf-8'
    exec sp_OAMethod @obj, 'setRequestHeader', null, 'Host', @host
    exec sp_OAMethod @obj, 'setRequestHeader', null, 'SOAPAction', @SoapAction
    exec sp_OAMethod @obj, 'send', null, @SoapAction
end

Insert into @t (strxml) 
exec sp_OAGetProperty @obj, 'responseXML.xml' --, @responseText out
exec sp_OAGetProperty @obj, 'Status', @status out
exec sp_OADestroy @obj

declare @X xml
select @X = strxml from @t

SELECT @X
SELECT @status

None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 T-sql 设置肥皂请求属性 的相关文章

随机推荐

  • NDB 查询以字符串开头的结果

    使用 Google App Engine NDB 我希望查询以用户输入的字符串开头的所有项目 例子 abc 123 abcdefg 123abc 查询 abc 应返回 abc 123 abcdefg 但是 不是 123abc 因为它不 以
  • 在带有数字的文本框中自动添加逗号 (,)

    我当前的编码在有 4 个或更多数字时添加逗号 但不是 1101 1 101 我的代码正在这样做 1101 110 1 我希望它格式化并将逗号放在前面 我的 JavaScript
  • 无法在 Windows 7 / OSX 上安装 jasmine-core

    我正在尝试安装karma jasmine在 Windows 7 Git Bash 上 根据以下指南 http karma runner github io 0 13 intro installation html http karma ru
  • Bing Api 针对简单单词“游戏”返回 41 个结果

    我正在尝试在我的网站中实施 bing 搜索 我需要 JSON 格式的搜索结果 这是我正在使用的网址 我正在尝试搜索一个简单的文字游戏 我应该得到数百万个结果 但我总共得到 41 以下是我的结果的一部分 SearchResponse Vers
  • ASP.NET DropDownList 上的 FindByValue

    我在自定义用户控件中有以下代码 其中包含名为 ddlAggerationUnitId 的 DropDownList DropDownList 在 Page Load 事件上进行数据绑定 值 设置为 40 并且它确实存在 如果我删除 set
  • 线程安全枚举单例

    枚举非常适合创建单例 我知道枚举方法不是线程安全的 所以我尝试使其成为线程安全的 任何人都可以确认此实施是否正确 这么多地方用static和volatile好不好 可以优化吗 由于内部类是私有的 所以我必须在枚举中创建函数来访问内部类功能
  • 如何检查 PostgreSQL 公共模式是否存在?

    运行以下查询 SELECT exists SELECT schema name FROM information schema schemata WHERE schema name public AS schema exists 我总是越来
  • R中按距离聚类

    我有一个整数向量 我希望将其分成簇 以便任何两个簇之间的距离大于下限 并且在任何簇内 两个元素之间的距离小于上限 例如 假设我们有以下向量 1 4 5 6 9 29 32 36 并将上述下界和上限分别设置为 19 和 9 下面的两个向量应该
  • Team Foundation Server 合并未合并

    为什么 TFS 不想归还我的旧文件 Dev Branch Main Branch Merging Dev to Main Edit 鉴于下面的第一个答案和更多调查 我相信我正在尝试完成整个分支覆盖 这可能吗 这是一件好事 我认为最好的办法是
  • 编译 SASS 时出现预期换行错误

    我遇到的问题是我的 SASS 无法编译并且它向我显示相同的错误 Expected NewLine topper h3 text align center text decoration underline list group active
  • 在自定义 keras 损失中使用 keras 模型

    我有一个名为的常规 keras 模型e我想比较两者的输出y pred and y true在我的自定义损失函数中 from keras import backend as K def custom loss y true y pred re
  • (iPhone) selectedRange 用于不可编辑的 UITextView (或其他点击处理方法?)

    我正在使用一个UITextView保存静态内容 中文意思是字符都是固定宽度的 我想让用户单击文本中的某个字符并显示该字符的字典信息 我知道所有与缺乏复制和粘贴相关的问题 但我希望有一种方法可以做到这一点 而无需等待 iPhone 3 0 固
  • 是否有可能在源代码中抑制 sonarcloud 的警告?

    我面临一些声纳云警告的问题 这些警告在最近的将来不会得到解决 现在应该被禁用 这些警告是由 sonarcloud 在 CI 构建过程中发出的 没有任何本地分析器 有没有办法在项目 文件 类和 或方法级别上抑制源代码中的某些特定警告 官方文档
  • 在 NativeModules 中添加对象

    我想用https github com dgladkov react native image rotate https github com dgladkov react native image rotate在反应本机项目中 我用它下载
  • Java JTextPane RTF 保存

    我有以下代码尝试将 JTextPane 的内容保存为 RTF 虽然下面的代码创建了一个文件 但它是空的 关于我做错了什么有什么建议吗 像往常一样 不要忘记我是初学者 if option JFileChooser APPROVE OPTION
  • 在python中计算直方图峰值

    在Python中 如何计算直方图的峰值 我试过这个 import numpy as np from scipy signal import argrelextrema data 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 1
  • 如何在Python中将元组转换为多层嵌套字典?

    我有一个以下格式的元组 639283 298290710 1385 639283 298290712 1389 639283 298290715 1395 745310 470212995 2061 745310 470213821 371
  • 将 MySql 从 Windows 服务器迁移到 Linux

    从旧的 Win2003 服务器迁移到新的 VM 服务器 我们选择 Win 或 Linux 如果我们使用 Linux 转换当前表会有任何问题吗 将 MySQL Windows 迁移到相同版本的 MySQL Linux 您可以按如下方式 mys
  • 不可变对象的真正好处是什么

    我总是听到人们说 在使用多个线程时管理不可变对象更容易 因为当一个线程访问不可变对象时 不必担心另一个线程正在更改它 那么 如果我有一个公司所有员工的不可变列表并且雇用了一名新员工 会发生什么情况 在这种情况下 必须复制不可变列表 并且它的
  • 从 T-sql 设置肥皂请求属性

    下面是我用来连接到我的 api 服务器的代码 对于其他调用来说一切正常 但是当涉及到上传图像时 它就不起作用了 如果我将代码复制到 SoapUI 并从那里运行 它确实可以工作 但在 SoapUI 中我必须将请求属性 启用内联文件 更改为 t