1

spyne を使用して単純なサービスを構築しましたが、1 つの問題があります。メソッドの入力パラメーターが複雑な型にラップされます。

class JiraAdapter(ServiceBase):

    @srpc(Unicode, Unicode, Unicode, _returns=String)
    def CreateJiraIssueWithBase64Attachment(summary, base64attachment, attachment_filename):
        status = Status
        try:
            newkey = jira_client.createWithBase64Attachment(summary, base64attachment.decode('string-escape'), attachment_filename)
            status.Code = StatusCodes.IssueCreated
            status.Message = unicode(newkey)
        except Exception as e:
            status.Code = StatusCodes.FailedToCreateIssue
            status.Message = u'Internal Exception: %s' % e.message
        return status.__str__()

    application = Application([JiraAdapter],
    tns='JiraAdapter',
    in_protocol=Soap11(),
    out_protocol=Soap11()
)

結果は次の WSDL になります (相対ビットのみを処理します)。

<wsdl:portType name="Application">
<wsdl:operation name="CreateJiraIssueWithBase64Attachment" parameterOrder="CreateJiraIssueWithBase64Attachment">
<wsdl:input name="CreateJiraIssueWithBase64Attachment" message="tns:CreateJiraIssueWithBase64Attachment"/>
<wsdl:output name="CreateJiraIssueWithBase64AttachmentResponse" message="tns:CreateJiraIssueWithBase64AttachmentResponse"/>
</wsdl:operation>
</wsdl:portType>

    ....

<xs:complexType name="CreateJiraIssueWithBase64Attachment">
<xs:sequence>
<xs:element name="summary" type="xs:string" minOccurs="0" nillable="true"/>
<xs:element name="base64attachment" type="xs:string" minOccurs="0" nillable="true"/>
<xs:element name="attachment_filename" type="xs:string" minOccurs="0" nillable="true"/>
</xs:sequence>
</xs:complexType>

パラメータのシーケンスを必要とする方法でspyneビルドwsdlを作成する方法はありますか? クライアント アプリケーションは VBA で記述されており、複雑な型パラメーターを送信する方法を知っているのは神だけです。

4

0 に答える 0