У меня есть веб-сервис, с методом и консольного приложения, где я использовал веб-службыКак десериализовать xmlResult из WebService или использовать webService без SOAP?
[WebMethod]
public Foo HelloWorld(Foo foo)
{
Foo foo2 = new Foo();
foo2.Id = 10;
foo2.Name = "roman";
return foo2;
}
и приложение, в котором я использовал этот веб-метод:
using (WebClient client = new WebClient())
{
{
//how to replace this block on a short line likes Foo result = webService.WebMethod(params)
client.Headers.Add("SOAPAction","\"http://tempuri.org/HelloWorld\"");
client.Headers.Add("Content-Type", "text/xml; charset=utf-8");
string payload = @"<?xml version=""1.0"" encoding=""utf-8""?>
<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""
xmlns:xsd=""http://www.w3.org/2001/XMLSchema""
xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
<soap:Body>
<HelloWorld xmlns=""http://tempuri.org/"">
<foo>
<Id>10</Id>
<Name>23</Name>
</foo>
</HelloWorld>
</soap:Body>
</soap:Envelope>";
var data = Encoding.UTF8.GetBytes(payload);
var result = client.UploadData("http://localhost:22123/Service1.asmx", data);
Console.WriteLine(Encoding.Default.GetString(result));
}
}
Результат является:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<HelloWorldResponse xmlns="http://tempuri.org/">
<HelloWorldResult>
<Id>10</Id>
<Name>roman</Name>
</HelloWorldResult>
</HelloWorldResponse>
</soap:Body>
</soap:Envelope>
Мои проблемы:
- Как заменить много строк кода на маленькую строку?
- Как десериализовать
webResult
с помощью Linq для XML или есть другой способ сделать это?
Возможный дубликат [How для десериализации документа XML] (http://stackoverflow.com/questions/364253/how-to-deserialize-xml-document) – CSharpie
Отчасти вы правы, но, к сожалению, нет. Мне нужно отправить SOAP в веб-службу, получить SOAP из веб-службы и разобрать результат на класс. Я хочу знать, как это сделать без создания SOAP (myclass result = myWebService.WebMethod (некоторые переменные). –