C# 使用UWP将信息保存到SOAP

C# 使用UWP将信息保存到SOAP,c#,windows,api,soap,uwp,C#,Windows,Api,Soap,Uwp,我一直在用谷歌搜索,但最后我在这个问题上有些挠头 我学习代码很慢,但我并没有真正放弃。只要有好的文档,我通常可以通过它来学习 我当前的问题解决了将数据从UWP应用程序发送到SOAP服务的问题。获取数据很容易找到相关文档。但储蓄似乎是另一回事 在过去的两天里,我也试图在这里找到它,但没有给出太多 有谁能给我一些提示或示例代码,让我们使用C#将数据从UWP应用程序发送到SOAP服务 我想在XAML中发送数据的代码行非常简单 <textbox>Int</textbox <tex

我一直在用谷歌搜索,但最后我在这个问题上有些挠头

我学习代码很慢,但我并没有真正放弃。只要有好的文档,我通常可以通过它来学习

我当前的问题解决了将数据从UWP应用程序发送到SOAP服务的问题。获取数据很容易找到相关文档。但储蓄似乎是另一回事

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

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

我想在XAML中发送数据的代码行非常简单

<textbox>Int</textbox
<textbox>Decimal?</textbox
<textbox>String</textbox
<button name=send />
Int
有谁能给我一些提示或示例代码,让我们使用C#将数据从UWP应用程序发送到SOAP服务

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

如果您需要发送数据,也可以使用此类,我们需要从代码隐藏中构造Soap请求,下面是一个简单的演示:

测试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>

txt1
txt2
txt3
代码示例:

 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);
    }
private async void btn\u Send\u Click(对象发送方,RoutedEventArgs e)
{
等待AddNumbersAsync(新Uri(“http://xxxxxx/TestService.asmx“txt1”、“txt2”、“txt3”);
}
公共异步任务AddNumbersAsync(Uri、字符串t1、字符串t2、字符串t3)
{
var soapString=this.ConstructSoapRequest(t1、t2、t3);
使用(var client=new HttpClient())
{
client.DefaultRequestHeaders.Add(“SOAPAction”http://TestServiceService/ITestServiceService/Save");
var content=new-HttpStringContent(soapString,Windows.Storage.Streams.unicodeincode.Utf8,“text/xml”);
使用(var response=wait client.PostAsync(uri,内容))
{
var soapResponse=await response.Content.ReadAsStringAsync();
返回此.ParseSoapResponse(soapResponse);
}
}
}
私有字符串请求(字符串t1、字符串t2、字符串t3)
{
返回String.Format(@)
{0}
{1}
{2}
“、t1、t2、t3);
}
私有int-ParseSoapResponse(字符串响应)
{//根据SOAP响应自定义此函数
var soap=XDocument.Parse(响应);
XNS=”http://TestService/";
var result=soap.subjects(ns+“SaveResponse”).First().Element(ns+“SaveResult”).Value;
返回Int32.Parse(结果);
}

回答得很好,简单明了。工作完美。HttpContent=newstringcontent(sendevelope,Encoding.UTF8,“application/soap+xml”)也可以使用。