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.
Looks like this issue. As a workaround (a dirty one) you can do the following:
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"/>