Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

F# WSDL Type Provider and Confluence

When I use the WSDL Type provider to create a client for Confluence SOAP service then I get all methods with (unit -> unit) signature.

#r "System.ServiceModel.dll"
#r "FSharp.Data.TypeProviders.dll"
open System.ServiceModel
open Microsoft.FSharp.Data.TypeProviders

[<Literal>]
let ConfluenceServiceWsdl = "https://developer.atlassian.com/rpc/soap-axis/confluenceservice-v2?WSDL"
type ConfluenceService = Microsoft.FSharp.Data.TypeProviders.WsdlService<ConfluenceServiceWsdl>

let service = ConfluenceService.``Getconfluenceservice-v2``()

service.getPages;;
...
val it : (unit -> unit) = <fun:it@3-1>

but it should be something like Vector<PageSummary> getPages(String token, String spaceKey) - (from Remote Confluence Methods documentation)

What am I doing wrong? How to create full-functional service client? Is something wrong with WSDL?

P.S. Confluence SOAP WSDL was generated by Apache Axis.

like image 993
Sergey Tihon Avatar asked Sep 18 '25 23:09

Sergey Tihon


1 Answers

Looks like this issue. As a workaround (a dirty one) you can do the following:

  1. Specify LocalSchemaFile=.wsdlschema and ForceUpdate=false
  2. Open .wsdlschema, fix messages that corresponds to faults and add corresponding elements

As a sample:

this

<wsdl:message name="VersionMismatchException">
    <wsdl:part name="fault" type="tns1:VersionMismatchException"/>
</wsdl:message>

will become

<wsdl:message name="VersionMismatchException">
    <wsdl:part name="fault" element="tns1:VersionMismatchException"/>
</wsdl:message>

and this

<complexType name="AlreadyExistsException">
    <complexContent>
        <extension base="tns1:RemoteException">
             <sequence/>
        </extension>
    </complexContent>
</complexType>

will be changed to

<complexType name="AlreadyExistsException">
    <complexContent mixed="false">
        <extension base="tns1:RemoteException">
            <sequence />
         </extension>
     </complexContent>
</complexType>
<element name="AlreadyExistsException" type="tns1:AlreadyExistsException"/>
like image 119
desco Avatar answered Sep 22 '25 21:09

desco



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!