2016-08-19 4 views
1

Я пытаюсь сделать свой путь через Google, но в итоге я немного почесываю голову по этому вопросу.сохранить информацию в SOAP с помощью UWP

Я медленный ученик, когда дело доходит до кода, но я действительно не сдаюсь. Пока есть хорошая документация, я могу, как правило, узнать свой путь.

Мой текущий вопрос разрешает отправлять данные из приложения UWP в службу SOAP. Получение данных довольно легко найти документацию. Но экономия - это совсем другое дело.

Я также пытался найти его здесь в течение последних двух дней, но не так много дано.

Может ли кто-нибудь дать мне советы или пример кода, где мы используем C# для отправки данных из приложения UWP в службу SOAP?

Строка кода в XAML, которую я хочу отправить данные, довольно проста.

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

ответ

0

Может кто-нибудь дать мне советы или пример кода, где мы используем C# для передачи данных из UWP приложения к службе SOAP?

Во-первых, вы можете видеть, что, как вызывать данные из службы SOAP, общий способ заключается в использовании класса HttpClient.

Если вам нужно отправить данные, а также использовать этот класс, нам нужно построить запрос Мыло из кода позади, вот простой демо:

запрос Тестирование 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); 
    } 
Смежные вопросы