cancel
Showing results for 
Search instead for 
Did you mean: 

how to Set soap request properties

Highlighted
New Contributor

how to Set soap request properties

Below is the code i am using to connect to my api server, all works fine for other calls, but when it comes to uploading images, it's not working. if i copy the code into SoapUI and run from there, it does work but in SoapUI i have to change the request property "Enable inline files" to true. Does anyone knows how i can pass that property value in my below code

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.jpg</apic:data>
         <apic:dataType>JPG</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)
    ,@Err varchar(2000)
    ,@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 @Err
SELECT @X
SELECT @status
Building with the Collaborator API

Help Documenation
The Collaborator API is a JSON-RPC API that lets you integrate with Collaborator 9.0 and above. For more information about how the API works, check out the API description here:


Sample Plugins
For an example of an add-in that uses the API, take a look at the Microsoft Word Add-in for Collaborator:


We list all the great plugins our network has already built on this page on the SmartBear website.

Description

Meet the Community Leaders!

SmartBear Connect is an excellent opportunity for training, in-person support, and networking.

GET YOUR TICKET WITH $100 OFF