gpt4 book ai didi

F# WSDL 类型提供程序和 Confluence

转载 作者:行者123 更新时间:2023-12-01 10:32:43 24 4
gpt4 key购买 nike

当我使用 WSDL 类型提供程序为 Confluence 创建客户端时SOAP 服务然后我得到所有带有 (unit -> unit) 签名的方法。

#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>

但它应该是这样的 Vector<PageSummary> getPages(String token, String spaceKey) -(来自 Remote Confluence Methods 文档)

我究竟做错了什么?如何创建全功能的服务客户端? WSDL 有什么问题吗?

附言Confluence SOAP WSDL 是由 Apache Axis 生成的.

最佳答案

看起来像 this issue .作为一种解决方法(肮脏的),您可以执行以下操作:

  • 指定 LocalSchemaFile=.wsdlschema 和 ForceUpdate=false
  • 打开.wsdlschema,修复故障对应的消息并添加相应的元素

  • 作为示例:


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

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

    还有这个
    <complexType name="AlreadyExistsException">
    <complexContent>
    <extension base="tns1:RemoteException">
    <sequence/>
    </extension>
    </complexContent>
    </complexType>

    将更改为
    <complexType name="AlreadyExistsException">
    <complexContent mixed="false">
    <extension base="tns1:RemoteException">
    <sequence />
    </extension>
    </complexContent>
    </complexType>
    <element name="AlreadyExistsException" type="tns1:AlreadyExistsException"/>

    关于F# WSDL 类型提供程序和 Confluence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14346810/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com