c# - 使用 C# 的 SOAP 客户端

标签 c# soap request httpwebrequest httpwebresponse

我有 Soap Web 服务 https://test-submit.health263.systems:8081/apacewebservices/AMF1_0?wsdl 。它有一个名为process的方法。我的问题是如何创建 SOAP 客户端来发送请求,从服务器提交/检索信息。请求的示例 XML 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Member xmlns="urn:apace:member:format:1.0">
  <Request>
    <Transaction>
      <VersionNumber>1.0</VersionNumber>
      <Number>434252-342234-6765</Number>
      <SystemIdentifier>SYSTEM999</SystemIdentifier>
      <DestinationCode>APACE</DestinationCode>
      <ClientCountryCode>ZA</ClientCountryCode>
      <Timestamp TimeZone="Africa/Johannesburg">20160601123456</Timestamp>
      <TestIndicator>Y</TestIndicator>
      <User>ProviderX/Jane Doe</User>
    </Transaction>
    <MembershipLookup>
      <Funder>AFunder</Funder>
      <WithMembershipNumber>
        <MembershipNumber>123456789</MembershipNumber>
      </WithMembershipNumber>
    </MembershipLookup>
  </Request>
</Member>

响应消息的结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<Member xmlns="urn:apace:member:format:1.0">
  <Response>
    <Transaction>
      <VersionNumber>1.0</VersionNumber>
      <Number>434252-342234-6765</Number>
      <Status>S</Status>
      <Timestamp TimeZone="Africa/Johannesburg">20160601123500</Timestamp>
    </Transaction>
    <Membership NumberOfBeneficiaryRecords="2">
      <Funder>AFunder</Funder>
      <MembershipNumber>123456789</MembershipNumber>
      <Beneficiary SequenceNumber="1">
        <DependentCode>00</DependentCode>
        <Type>P</Type>
        <Status>A</Status>
        <BiometricEnrolmentStatus>Y</BiometricEnrolmentStatus>
      </Beneficiary>
      <Beneficiary SequenceNumber="2">
        <DependentCode>01</DependentCode>
        <Type>D</Type>
        <Status>A</Status>
        <BiometricEnrolmentStatus>Y</BiometricEnrolmentStatus>
      </Beneficiary>
    </Membership>
  </Response>
</Member>

请帮忙,我真的很困惑,没有使用 C# 的 SOAP 服务,我已经尝试过在线示例,但结构不符合我的消息结构更复杂

实际的消息结构如下:

<soap:Envelope
    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:apac="http://apace.systems/apacewebservices/"
    xmlns:urn="urn:apace:member:format:1.1">
    <soap:Header>
        <apac:secureToken>Token66657752</apac:secureToken>
    </soap:Header>
    <soap:Body>
        <apac:process>
            <apac:request>
                <Member
                    xmlns="urn:apace:member:format:1.1">
                    <Request>
                        <Transaction>
                            <VersionNumber>1.1</VersionNumber>
                            <Number>30074</Number>
                            <SystemIdentifier>LIFEHEALTH</SystemIdentifier>
                            <DestinationCode>HEALTH263</DestinationCode>
                            <ClientCountryCode>ZA</ClientCountryCode>
                            <Timestamp TimeZone="Africa/Johannesburg">20200705123456</Timestamp>
                            <TestIndicator>Y</TestIndicator>
                            <User>CIMSZW/Jane Doe</User>
                        </Transaction>
                        <MembershipLookup>
                            <IncludeDetail>Y</IncludeDetail>
                            <Funder>CIMSZWA</Funder>
                            <WithMembershipNumber>
                                <MembershipNumber>11117374</MembershipNumber>
                                <DependentCode>00</DependentCode>
                            </WithMembershipNumber>
                        </MembershipLookup>
                    </Request>
                </Member>
            </apac:request>
        </apac:process>
    </soap:Body>
</soap:Envelope>

如何使用安全 key token 创建 SOAP 信封和 header 部分

最佳答案

你有两个选择

  1. 添加为服务引用,它将生成
    add as a service reference
  • 使用 Visual Studio 开发人员提示并使用代理类使用服务
  • svcutil.exe https://test-submit.health263.systems:8081/apacewebservices/AMF1_0?wsdl/t:code/n:*,SampleNamespace/o:C:\Service\sampleServiceProxy.cs/config:C:\Service\sampleService.config/ct:System.Collections.Generic.List`1

    关于c# - 使用 C# 的 SOAP 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63679877/

    相关文章:

    c# - 如何过滤JArray?

    java - Web 服务编程错误(附件支持已禁用。)

    javascript - Facebook Graph API 获取 friend 的 friend

    node.js - 如何通过代理发送 node.js http 请求(使用 require ('http' ).request 方法)

    c# - 创建小时列表

    c# - TreeViewItem 无法在 BackgroundWorker 中更新

    c# - Asp.Net WebApi 继承与 BaseController

    api - 谷歌地图 API 是基于 REST 的吗?

    mysql - Perl 数据库连接在 .pm 文件中不起作用

    python - 尝试为 track.getSimilar 调用 last.fm Rest api,在 python 中无法理解响应