2017-04-21 2 views
1

Ich verwende RestSharp, um anzufordern, dass es sich um ein einfaches SOAP-Services-Automatisierungsprojekt handelt. Ich lade Xml über XDocument, aber ich kann es nicht in request.AddBody verwenden.Restsharp - XDocument in Objekt konvertieren

Fehler: Eine Ausnahme des Typs 'System.InvalidOperationException' aufgetreten in RestSharpXML.dll wurde aber in Benutzercode

public class SOAPSharp 

{ 
     XDocument currencyXML = XDocument.Load(@"../../Data/currencyXML.xml"); 

     [Test] 
     public void xmlRequest() { 

      try 
      { 
       var client = new RestClient(); 

       var request = new RestRequest("http://www.webservicex.net/periodictable.asmx?WSDL", Method.POST); 
       request.XmlSerializer = new RestSharp.Serializers.DotNetXmlSerializer(); 
       request.RequestFormat = DataFormat.Xml; 
       request.AddHeader("Content-Type", "application/xml; charset=utf-8"); 
       // request.AddBody(ParameterType.RequestBody); 
       request.AddBody(currencyXML); 

       var response = client.Execute(request); 
      } 

      catch (Exception) 
      { 
       throw; 
      } 

     } 
    } 

Antwort

1

Ihr Problem ist nicht behandelt, dass XDocument nicht IXmlSerializable nicht implementiert. Verwenden Sie stattdessen die Wurzel XElement die hatIXmlSerializable implementieren:

request.AddBody(currencyXML.Root); 

Oder laden Sie einfach es als XElement zu beginnen:

var currencyXML = XElement.Load(@"../../Data/currencyXML.xml"); 
+0

Dank @dbc, seine klar funktioniert –