C# 从.Net应用程序调用非.Net Web服务

C# 从.Net应用程序调用非.Net Web服务,c#,web-services,wcf,visual-studio-2012,soap-client,C#,Web Services,Wcf,Visual Studio 2012,Soap Client,我正在开发一个.Net客户端应用程序,该应用程序将通过SOAP标准使用一个非.Net web服务,以计算和发布商品的销售税信息。没有.asmx。web服务由其他组编写和维护。他们提供了一个WSDL url,并说我需要的所有XSD模式都在其中。问题是,它是使用xsd:import标记嵌套和菊花链的,深度只有几层 我已通过添加服务引用将web服务添加到我的Visual Studio 2012 Windows窗体项目中。调用此web服务不是直截了当的,因为它有一些额外的安全要求 web服务有3个操作-

我正在开发一个.Net客户端应用程序,该应用程序将通过SOAP标准使用一个非.Net web服务,以计算和发布商品的销售税信息。没有.asmx。web服务由其他组编写和维护。他们提供了一个WSDL url,并说我需要的所有XSD模式都在其中。问题是,它是使用xsd:import标记嵌套和菊花链的,深度只有几层

我已通过添加服务引用将web服务添加到我的Visual Studio 2012 Windows窗体项目中。调用此web服务不是直截了当的,因为它有一些额外的安全要求

web服务有3个操作-心跳、计算、发布

凭借我对WCF的有限知识和另一位专家的帮助,我成功地调用了heartbeat函数;这是最简单的,因为它不需要参数

我的难题是,如何构造输入来调用其他两个函数——计算和发布?它们都将强类型对象作为输入。当这个应用程序.Net将被其他应用程序调用时,我如何构造这样一个强类型对象

目前,作为一个实验,我正在基于为服务引用创建的代理类VS2012构建一个对象,对其进行初始化并手动填充一些值。我应该使用XSD.exe从WSDL为模式生成类,并通过反序列化输入填充它们吗

下面是对calculate函数的SOAP调用。当从SoapUI调用时,此功能有效

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:v1="http://MyCompany.com/svc/Finance/SalesTax/v1/">
    <soap:Header/>
    <soap:Body>
        <v1:calculate>
            <CalculateRequest>
                <Context>
                    <!--Optional:-->
                    <SendingApplication>SoapUI</SendingApplication>
                    <!--Optional:-->
                    <UserId>SoapUI</UserId>
                    <!--Zero or more repetitions:-->
                    <LocaleCode>en</LocaleCode>
                    <!--Optional:-->
                    <ApplicationName>SoapUI</ApplicationName>
                </Context>
                <TaxRequestor>
                    <Name>Person X</Name>
                    <!--Optional:-->
                    <!--Optional:-->
                    <AdministrativeAddress>
                        <Line1>888 River Dr</Line1>
                        <City>Queens</City>
                        <County>Queens County</County>
                        <State>NY</State>
                        <PostalCode>11001</PostalCode>
                        <CountryISO3Char>USA</CountryISO3Char>
                    </AdministrativeAddress>
                    <CompanyNumber>1</CompanyNumber>
                </TaxRequestor>
                <Transaction>
                    <!--1 or more repetitions:-->
                    <LineItem>
                        <LineNumber>1</LineNumber>
                        <!--Optional:-->
                        <Item>
                            <!--Optional:-->
                            <Identifier>10134</Identifier>
                            <!--Zero or more repetitions:-->
                            <Name LocaleCode="en-US">Product X</Name>
                            <!--Optional:-->
                            <TaxCode>9876</TaxCode>
                            <Department>
                                <!--Optional:-->
                                <Code>99</Code>
                                <!--Zero or more repetitions:-->
                                <Name LocaleCode="en-US">?</Name>
                            </Department>
                        </Item>
                        <!--Optional:-->
                        <Quantity>10</Quantity>
                        <!--Optional:-->
                        <UnitPrice>
                            <Amount>1000</Amount>
                        </UnitPrice>
                        <ShipFromAddress>
                            <Line1>888 River Dr</Line1>
                            <City>Queens</City>
                            <County>Queens County</County>
                            <State>NY</State>
                            <PostalCode>11001</PostalCode>
                            <CountryISO3Char>USA</CountryISO3Char>
                        </ShipFromAddress>
                        <ShipToAddress>
                            <Line1>1041 New York Rd</Line1>
                            <City>Newark</City>
                            <County>Essex</County>
                            <State>NJ</State>
                            <PostalCode>07054</PostalCode>
                            <CountryISO3Char>USA</CountryISO3Char>
                        </ShipToAddress>
                        <!--Zero or more repetitions:-->
                        <LineItemIdentifier>1</LineItemIdentifier>
                    </LineItem>
                    <LineItem>
                        <LineNumber>1</LineNumber>
                        <!--Optional:-->
                        <Item>
                            <!--Optional:-->
                            <Identifier>98765</Identifier>
                            <!--Zero or more repetitions:-->
                            <Name LocaleCode="en-US">Product X</Name>
                            <!--Optional:-->
                            <TaxCode>Some Tax Code</TaxCode>
                            <Department>
                                <!--Optional:-->
                                <Code>99</Code>
                            </Department>
                        </Item>
                        <!--Optional:-->
                        <Quantity>10</Quantity>
                        <!--Optional:-->
                        <UnitPrice>
                            <Amount>1000</Amount>
                        </UnitPrice>
                        <ShipFromAddress>
                            <Line1>888 River Dr</Line1>
                            <City>Queens</City>
                            <County>Queens County</County>
                            <State>NY</State>
                            <PostalCode>11001</PostalCode>
                            <CountryISO3Char>USA</CountryISO3Char>
                        </ShipFromAddress>
                        <ShipToAddress>
                            <Line1>1008 3rd St</Line1>
                            <City>Lewisville</City>
                            <County>Denton</County>
                            <State>TX</State>
                            <PostalCode>75010</PostalCode>
                            <CountryISO3Char>USA</CountryISO3Char>
                        </ShipToAddress>
                        <!--Zero or more repetitions:-->
                        <LineItemIdentifier>1</LineItemIdentifier>
                    </LineItem>
                </Transaction>
            </CalculateRequest>
        </v1:calculate>
    </soap:Body>
</soap:Envelope>

请提供您的建议和建议。非常感谢。使用VS2012.Net 4.5,C

您是否尝试使用svcutil.exe生成代理和契约类?当其他应用程序调用此应用程序.Net时,您说我如何构造这样一个强类型对象是什么意思?