【问题标题】:save information to SOAP using UWP使用 UWP 将信息保存到 SOAP
【发布时间】:2016-08-19 13:02:57
【问题描述】:

我一直在尝试用谷歌搜索,但我最终对这个问题有点摸不着头脑。

在代码方面我学得比较慢,但我并没有真正放弃。只要有良好的文档,我通常可以通过自己的方式学习。

我当前的问题解决了将数据从 UWP 应用程序发送到 SOAP 服务。获取数据很容易找到有关的文档。但储蓄似乎完全不同。

过去两天我也试图在这里找到它,但没有给出太多。

谁能给我一些提示或示例代码,说明我们使用 C# 将数据从 UWP 应用程序发送到 SOAP 服务?

我要发送数据的 XAML 代码行非常简单。

<textbox>Int</textbox
<textbox>Decimal?</textbox
<textbox>String</textbox
<button name=send />

【问题讨论】:

    标签: c# windows api soap uwp


    【解决方案1】:

    谁能给我一些提示或示例代码,我们使用 C# 将数据从 UWP 应用程序发送到 SOAP 服务?

    首先,您可能会看到如何从 SOAP 服务中调用数据,常用的方法是使用HttpClient 类。

    如果你需要发送数据,也使用这个类,我们需要从后面的代码构造Soap请求,这里是一个简单的demo:

    这样的测试 SOAP 请求:

    <?xml version=""1.0"" encoding=""utf-8""?>
        <s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/"">
            <s:Body>
                <Save xmlns=""http://TestService/"">
                    <textbox>txt1</textbox>
                    <textbox>txt2</textbox>
                    <textbox>txt3</textbox>
                </Save>
            </s:Body>
        </s:Envelope>
    

    代码示例:

     private async void btn_Send_Click(object sender, RoutedEventArgs e)
        {
            await AddNumbersAsync(new Uri("http://xxxxxx/TestService.asmx"), "txt1", "txt2", "txt3");
        }
    
        public async Task<int> AddNumbersAsync(Uri uri, string t1, string t2, string t3)
        {
            var soapString = this.ConstructSoapRequest(t1, t2, t3);
            using (var client = new HttpClient())
            {
                client.DefaultRequestHeaders.Add("SOAPAction", "http://TestServiceService/ITestServiceService/Save");
    
                var content = new HttpStringContent(soapString, Windows.Storage.Streams.UnicodeEncoding.Utf8, "text/xml");
                using (var response = await client.PostAsync(uri, content))
                {
                    var soapResponse = await response.Content.ReadAsStringAsync();
                    return this.ParseSoapResponse(soapResponse);
                }
            }
        }
    
        private string ConstructSoapRequest(string t1, string t2, string t3)
        {
            return String.Format(@"<?xml version=""1.0"" encoding=""utf-8""?>
    <s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/"">
        <s:Body>
            <Save xmlns=""http://TestService/"">
                <textbox>{0}</textbox>
                <textbox>{1}</textbox>
                <textbox>{2}</textbox>
            </Save>
        </s:Body>
    </s:Envelope>", t1, t2, t3);
        }
    
        private int ParseSoapResponse(string response)
        {//Custom this function based on your SOAP response 
            var soap = XDocument.Parse(response);
            XNamespace ns = "http://TestService/";
            var result = soap.Descendants(ns + "SaveResponse").First().Element(ns + "SaveResult").Value;
            return Int32.Parse(result);
        }
    

    【讨论】:

    • 优秀的答案,简单明了。完美运行。 HttpContent content = new StringContent(sEnvelope, Encoding.UTF8, "application/soap+xml") 也可以。
    猜你喜欢
    • 2020-08-10
    • 2013-05-09
    • 2015-11-23
    • 2014-10-23
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多